【发布时间】:2021-12-13 14:12:19
【问题描述】:
我正在为 Python 编写语法突出显示,并且我想让 cmets 仅在字符串中不包含时才突出显示为 cmets。 目前正在发生的事情:
# this line will be matched
x = '# this line is matched from `#` onwards'
但是,如果# 周围没有' 或",我希望它只选择要匹配的行。
example
我当前的正则表达式如下:#[^\n]* 选择# 和之后的所有内容,但我不知道如何让它首先检查周围的'
【问题讨论】:
-
你已经知道如何测试
\n是否不在字符串中;这有什么不同? -
Regex 不是编写语法高亮的最佳选择;像这样的问题会不断地绊倒你。你需要看看写一个词法分析器/解析器。
-
如果语法高亮器也在 Python 中,实际上只需使用 ast.parse;尽管如此,现在大多数编辑器等确实只支持正则表达式来突出显示语法。