按字符分隔符和子元素拆分行



在此字符串中:

#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|$)-右边必须有#和一个或多个单词字符或字符串末尾

最新更新