在此字符串中:
#animal the cat #tree palm tree
我想匹配
#animal
the cat
和
#tree
palm tree
我已经找到了几种方法来匹配第一个,但我在第二个#字符处停下来并从那里继续时遇到了问题。
(?<=#)(w*)s(.*)(?!#)
发现只有一个匹配捕获#animal
之后的所有内容直到结束。
懒惰地捕捉标签旁边的捕捉器捕捉标签
(?<=#)(w*)s(.*?)(?!#)
我错过了什么?
您需要
(#w+)s+(.*?)(?=#w|$)
请参阅regex演示。
如果可能存在换行符,则可以将.
替换为[sS]
/[wW]
/[dD]
/(?s:.*?)
,或者仅用(?s)
预处理图案。
详细信息:
(#w+)
-组1:一个#
字符,然后是一个或多个单词字符s+
-一个或多个空白(.*?)
-第2组:除换行字符之外的任何零个或多个字符,尽可能少(?=#w|$)
-右边必须有#
和一个或多个单词字符或字符串末尾