这是我收到的数据:
我只想获取问题的信息。我的问题可能有好几行。为此,我将“/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_1
和 line_2
是 line_
+ 数字并且必须存在,则将它们包含为
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/