gpt4 book ai didi

regex - 多行 sublime text 语言模块定义

转载 作者:行者123 更新时间:2023-12-01 10:03:48 30 4
gpt4 key购买 nike

我正在尝试为 Sublime Text 创建一个新的语法定义。我已经制定了正则表达式来突出显示每一行中的匹配项,但我希望匹配项包括新行以及任何字符。这是来自 tmLanguage 文件的正则表达式,它在一行中起作用:

<key>match</key>
<string>\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}</string>

我试图修改点 (.) 匹配以跨越多行,但它实际上并没有捕获整个 block 。我的理解是修饰符 ?m: 应该起作用,但不起作用。

<key>match</key>
<string>(?m:(\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}))</string>

有没有办法声明一个语言定义正则表达式来匹配多行?

最佳答案

改用单行修饰符:

<key>match</key>
<string>(?s:(\{\+\+(.*?)\+\+[ \t]*(\[(.*?)\])?[ \t]*\}))</string>

您误解了 (?m) 修饰符。您的正则表达式始终应用于一行。

  • 使用多行修饰符意味着您的正则表达式会将您的文本视为多行(这是默认行为),然后它会在每行周围添加 ^(...)$
  • 使用单行修饰符,不会添加^(...)$,然后.会匹配\r\n

关于regex - 多行 sublime text 语言模块定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430693/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com