javascript - 正则表达式 OR 在第一个单词处停止匹配

标签 javascript regex

这是我收到的数据:

我只想获取问题的信息。我的问题可能有好几行。为此,我将“/s”放在正则表达式的末尾。

我的正则表达式是:/问题:((.|)*)\n?(line_1|line_2)/s

示例1:

question : this is my question
line_1: 0
line_2: 1

示例 2:

question : this is my question
line_2: 1

对于我的示例 2,它可以工作,但对于示例 1,条件“or”不会在第一次出现时停止,您有解决方案吗?感谢您的帮助

最佳答案

你可以使用

question\s*:\s*(\S.*(?:\r?\n.+)*)

请参阅regex demo 。请注意,我添加了 \r?,因为 JavaScript 中的 . 与回车符不匹配。

如果 line_1line_2line_ + 数字并且必须存在,则将它们包含为

question\s*:\s*(\S.*(?:\r?\nline_\d.*)*)

参见this regex demo .

详细信息:

  • 问题 - 一个词
  • \s*:\s* - 用零个或多个空格括起来的冒号
  • (\S.*(?:\r?\nline_\d.*)*) - 第 1 组:
    • \S - 非空白字符
    • .* - 该行的其余部分
    • (?:\r?\nline_\d.*)* - 零个或多个以 line_ 开头的行和一个数字,然后是该行的其余部分可以有任何字符。 (?:\r?\n.+)* 匹配任何零个或多个非空(零长度)行。

关于javascript - 正则表达式 OR 在第一个单词处停止匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73541182/

相关文章:

javascript - 当数据发生变化并且不再满足查询时自动刷新网格

javascript - 如何在播放视频时更新视频的当前时间?

javascript - 使用 casperjs 更改/写入元素并在更改后捕获屏幕截图

regex - 如何将模式与连字符或撇号匹配

python - 使用正则表达式解析财务报表

javascript - 更改滚动条上的文字大小

javascript - 如何使用 Canvas 将圆与线连接起来

java - 如何使用主元将字符串分成两部分?

Javascript 正则表达式只允许最多 10 位数字,不允许字符串和特殊字符

python - 在 python 中命名为非捕获组?