【发布时间】:2020-03-12 08:21:00
【问题描述】:
我正在使用 Prism.js,它是语法高亮工具,它会高亮匹配某些正则表达式的单词。
我想匹配单词git之后的任何单词,所以我尝试像这样使用积极的lookbehind。
(?<=git )\w+
不幸的是,似乎不支持正向后视,所以我必须找到它的等效正则表达式。有什么方法可以匹配单词git之后的任何单词而不使用肯定的后视?
例如,我想在没有积极后视的情况下执行此操作。
"git checkout master" -> only "checkout"
"git log --graph" -> only "log"
"anything after the word git matches" -> only "matches"
另外,我不能使用组,因为我不能告诉 Prism 选择某个组。它将始终突出整场比赛。
例如(?:git )(\w+)将保存第一组中git之后的任何单词,但它匹配单词git和git之后的单词。所以它会突出显示
"git checkout master" -> "git checkout"
"git log --graph" -> "git log"
"anything after the word git matches" -> "git matches"
这不是我想要的。
【问题讨论】:
-
试试
git\s+(?<highlightIt>\w+)或git\s+\K\w+。一般来说,如果您无法访问组并且没有环视功能或\K运算符,则无法执行您需要的操作。 -
@WiktorStribiżew 它似乎支持正/负前瞻,但不支持正/负后瞻。是否不可能使积极的后视与前瞻等效?
-
消费模式是不可能的。
(?<!^)=(?!^),但(?<!abc)!=(?!abc) -
所以在阅读了一些文档之后。不应该有
lookbehind: true选项吗?当设置为TRUE时,正则表达式模式中的第一个捕获组在匹配此标记时会被丢弃,因此它的行为就像是向后看一样。 This 就是我的意思。检查关于lookbehind的部分。因为我不确定棱镜到底是什么,所以我完全可以在这里。但我认为值得一提。 -
@JvdV 我不知道有一个lookbehind 选项!谢谢你。它的工作原理就像lookbehind。
标签: regex regex-lookarounds prismjs