jEdit自定义模式中的多行正则表达式

时间:2011-08-17 23:04:22

标签: regex highlighting multiline jedit

我目前正在与朋友创建一种语言,我想在jEdit中为它提供一个突出显示。 它的语法实际上非常简单。这些函数只能匹配这种模式:  $function_name(arguments)

请注意,我们的解析器当前正在工作,没有关闭标记,如C风格的半列,我们希望保留此功能。

我创建了我的jEdit模式,并且(几乎)成功地使用<SPAN_REGEXP>来设置我的模式。我是这样做的:

<SPAN_REGEXP HASH_CAR="\$" TYPE="KEYWORD3" DELEGATE="ARGS">

<BEGIN>\$[A-Za_z0-9_]*\s*\(</BEGIN>

<END>)</END>

</SPAN_REGEXP>

但这还不够好。

这就是我想要的:

  • 整个功能框架的颜色相同:$func( )
  • ARGS
  • %content1%的特殊突出显示(已在$func(%content1%)规则集中定义)
  • 没有突出显示不在$func
  • 之后的括号
  • 授权替代多行语法,如

$func

(

args

)

现在没有突出显示。 我猜我需要更改我的<BEGIN>正则表达式以接受换行符,但似乎jEdit无法匹配多行正则表达式以突出显示,尽管他完美地用于搜索和替换!

我尝试了(?s)(?m)标记,[\d\D]*解决方法,甚至是[\r\n]*,但它永远不会有效。

所以,这是我的问题:

  • 是否有人知道如何在jEdit模式<SPAN_REGEXP>中匹配多行正则表达式?
  • 如果没有,有没有人知道如何做我需要的事情?

1 个答案:

答案 0 :(得分:1)

如帮助中所述,SPAN_REGEXP不支持多行正则表达式。您当然可以指定多行正则表达式,但它们仅针对各行进行检查,因此将永远不会匹配。您可以将功能请求发布到jEdit的功能请求跟踪器,但是如果它还没有。