不检测多行标记

这里有一个正则表达式

\[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 的正则表达式查找器不能识别跨多行的标记。我想知道这是否与崇高文本的问题,一个可切换的选项,或只是我个人的正则表达式无能。

50845 次浏览

在开始时,使用 doall 修饰符 (?s)使点也匹配换行符。

(?s)\[sometag\](.*?)\[\/sometag\]

演示

如果由于某些原因不允许修改点的模式,你可以这样做:

[sometag](.|\n)+?[/sometag]