我正在尝试捕获两个标记(START[number]
和END[number]
)之间的所有内容,这些标记也需要提取数字。我需要支持换行符。
例如以下内容:
START[1]
message to capture ...END[1]
必须返回:
1
第2组:
message to capture ...
第3组:1
这是我的尝试(demo):
START\[(\d+)\]((.|\n|\r)*?)END\[(\d+)\]
当我获得要捕获的消息的最后一个字符组成的第三组时,它不起作用,我也不知道为什么。
有人可以帮我吗?谢谢。
答案 0 :(得分:1)
使用[\s\S]
代替(.|\n|\r)
START\[(\d+)\]([\s\S]+?)END\[(\d+)\]
为确保在START和END中具有相同的编号,请对组1使用向后引用:
(在评论中感谢Aaron de Windt)
START\[(\d+)\]([\s\S]+?)END\[(\1)\]