我正在尝试为Sublime Text创建一个新的语法定义。我已经计算出正则表达式以突出显示每一行中的匹配但我希望匹配包括新行以及任何字符。这是来自tmLanguage文件的正则表达式,它在一行中起作用:
<key>match</key>
<string>\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}</string>
我试图修改与跨度多线匹配的点(。),但它实际上并不会捕获整个块。我的理解是修饰符?m:应该有效,但不是。
<key>match</key>
<string>(?m:(\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}))</string>
有没有办法声明一个匹配多行的语言定义正则表达式?
答案 0 :(得分:4)
改为使用单行修饰符:
<key>match</key>
<string>(?s:(\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}))</string>
您误解了(?m)
修饰符。
您的正则表达式始终应用于一行。
^(...)$
。^(...)$
,然后.
将匹配\r\n