【问题标题】:Match any group of characters before a line break sign [duplicate]匹配换行符之前的任何字符组[重复]
【发布时间】:2016-12-23 18:36:54
【问题描述】:

我正在尝试匹配任何一组字符,直到出现这样的换行符:\n。我希望能够访问所有匹配的组。

我用来查找正则表达式的文本是这样的:

foo foo!\n *bar bar*\n *foo :* foo bar\n*foo :* 32 foo bar\n*Bar :* 37 foo foo\n*Time :* 11:00:00-14:00:00\n*Date :* 2016-12-23\n*Foo :* \n*bar* : 06XXXXXXXX

目前,我尝试了多种解决方案,效果最好的是这个正则表达式:

/([^\\n])\w+/

但它仍然不完美。它不考虑特殊字符或空格。

【问题讨论】:

  • s.match(/.+/g) 应该足够了。甚至s.split("\n")。字符串中可以有CR符号吗?
  • 您的 [^\\n] 将匹配除真正的反斜杠和真正的 n 之外的任何内容,这几乎肯定不是您想要的。你可以试试[^\n], but unfortunately \n` 在字符集中不起作用。
  • 预期输出是什么?

标签: javascript regex newline


【解决方案1】:

您需要匹配至少一个 (+) 字符,即 不是 换行符 (\n):

s = 'foo foo!\n *bar bar*\n *foo :* foo bar\n*foo :* 32 foo bar\n*Bar :* 37 foo foo\n*Time :* 11:00:00-14:00:00\n*Date :* 2016-12-23\n*Foo :* \n*bar* : 06XXXXXXXX'

console.log(s.match(/([^\n]+)/g))

【讨论】:

  • 有趣的是,如果你用点替换[^\n],你的正则表达式仍然可以工作,顺便说一句,你也不需要括号。
  • @torazaburo,写正则表达式的方法有很多 :) 点确实是其中之一 :) 顺便说一句,我们将不胜感激!
  • 你应该仔细检查一下。 \n 在字符类中确实有意义。运行我的例子:)
猜你喜欢
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2023-03-13
  • 2020-08-26
  • 2021-01-25
  • 2017-08-31
相关资源
最近更新 更多