我可以用来解析以下文本的正则表达式模式是什么:
Mission m1
"Mission a is completing exam"
End Mission
Something is not necessary
Task t1
"Task b is keeping house"
comment: "... End Task"
End Task
abc
Task t2
Do something
End Task
..使其看起来如下所示:
[1]:
Mission m1
"Mission a is completing exam"
End Mission
[2]:
Task t2
Do something
End Task
[3]:
Task t2
Do something
End Task
我尝试了这个正则表达式模式 \b(?:Mission|Task)\b(.|\n)*\b(?:Mission|Task)\b
- 问题是它只返回一个包含三个部分的结果。
最佳答案
这是对之前答案的完全重写,因为您的输入与开始时显示的内容有很大不同。
您需要一个简单的正则表达式来匹配两个字符串之间的字符串:
/^(Mission|Task)\b[\s\S]*?^End \1$/mg
这是一个unrolled version相同的正则表达式:
/^(Mission|Task)\b.*(?:\r?\n(?!End \1).*)*\r?\nEnd \1$/gm
请参阅regex demo
详细信息:
^
- 行的开头(Mission|Task)\b
-Mission
或Task
整个单词[\s\S]*?
- 任意 0 个以上字符,尽可能少到第一个...^End\1$
-End
、空格和捕获到第 1 组的单词作为整行。
关于JavaScript 正则表达式获取两个短语之间的分隔匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414350/