【发布时间】:2020-02-06 13:58:26
【问题描述】:
我使用一种没有任何预建语法高亮显示的旧语言。
虽然 notepad++ 具有用户定义的语言功能,但在某些情况下不受支持。对于这些情况,我使用了一个 python 脚本,该脚本使用正则表达式应用语法高亮。
我目前遇到的问题是使用正则表达式在花括号中查找模式。我要匹配的模式是 [A-Za-z_]\w* 。
所以基本上,一个变量名。但是,我只想匹配出现在双花括号内的实例。
在下面的字符串中,我想匹配 TimeStamps 和 Descending 的两个实例,仅此而已。
Test Test2'{{TimeStamps(Descending(1))(7:8)}}/{{TimeStamps(Descending(1))(1:4)}} - '
我已经尝试过这个(?<={{)([A-Za-z_]\w*)*(?=[0-9\(\)\:]*}}) 的变体,但是感觉我自己把它复杂化了。
感谢任何帮助。提前致谢。
【问题讨论】:
-
是python的模式还是记事本的模式?您可以使用捕获组
{{(\w+)[^\(]*\(([^()]+).*?}}regex101.com/r/PCvoDi/1 -
使用
{{.*?}},然后使用您的[A-Za-z_]\w*获取先前匹配项中的每个匹配项 -
不幸的是,python 只是我用来将正则表达式字符串输入 notepad++ 的工具。有一个库采用正则表达式字符串和颜色,并将该颜色应用于所有匹配项。
-
那么,输入和预期输出是什么?您可以访问 Python 代码吗?你可以使用 PyPi
regex模块而不是re吗? -
尝试解决方法,
[A-Za-z_]\w*(?=(?:(?!{{|}}).)*}})(或[A-Za-z_]\w*(?=(?:(?!{{|}})[\s\S])*}}))
标签: regex python-3.x notepad++