我这里有这个正则表达式;
\[sometag\](.*)\[/sometag\]
它应该捕获由 [sometag]
标记包围的文本。它适用于这些标签中包含的单行信息,例如字符串 [sometag]this is a bit of text[/sometag]
。但它不适用于像这样跨越多行的文本;
[sometag] here is more text
it spans more than one line [/sometag]
由于某种原因,Sublime text 的正则表达式查找器无法识别多行的标签。我想知道这是否是 Sublime Text 的问题,一个可切换的选项,或者只是我个人对正则表达式的无能。
如果由于某些原因不允许修改 dot 的模式,您可能会认为:
[sometag](.|\n)+?[/sometag]
(.|\n)+?
。如果您不能以某种方式使用 (?s)
,请使用 [\s\S]
/[\d\D]
/[\w\W]
,但不要使用此处建议的交替模式。这种模式效率很低,很容易导致超时问题。
[\s\S]
,但乍一看 (.|\n)
似乎等效?是否与匹配组有关?但是 (?:.|\n)
会是一样的吗?
*
之后的?
将进行非贪婪匹配。以[b]foo[/b]foo[b]bar[/b]
为例。\[b\].*\[\/b\]
将匹配从开始 b 到最后结束 b 的整体。?