这是我可能有的字符串:
(MyStringIsOneWholeWord *)
如果括号后的文本以My
.
/(^|\s|\()+My(\w+)/g,
问题在于它在结果中包含第一个括号,因为它是找到它的字母/字符。
我将如何摆脱结果中的括号?
编辑
有关更多信息,我正在编辑C Language
SHJS 语法荧光笔的 javascript 文件。
这是此问题的所有相关代码:
[
/(^|\s|\()+My(\w+)/g,
'sh_keyword',
-1
]
这是我可能有的字符串:
(MyStringIsOneWholeWord *)
如果括号后的文本以My
.
/(^|\s|\()+My(\w+)/g,
问题在于它在结果中包含第一个括号,因为它是找到它的字母/字符。
我将如何摆脱结果中的括号?
编辑
有关更多信息,我正在编辑C Language
SHJS 语法荧光笔的 javascript 文件。
这是此问题的所有相关代码:
[
/(^|\s|\()+My(\w+)/g,
'sh_keyword',
-1
]
如果这只是JS,您可以使用捕获组:
/(^|\s|\()+(My\w+)/g
然后在该组获得比赛。但是,似乎 SHJS 将使用整个匹配,需要使用后向,Javascript 的正则表达式引擎不支持。
为了解决这个问题,我建议您阅读文档。这部分在这里:
定义语言后,必须将其转换为 SHJS 使用的 JavaScript 格式。您将需要来自 SHJS 源代码分发的 sh2js.pl 脚本。sh2js.pl 脚本是用 Perl 编写的,需要 Parse::RecDescent 模块。
告诉我生成的 JS 文件不应该被编辑。文档说 SHJS 使用与 GNU Source-highlighting 相同的格式,此处指定。因此,您应该编辑原始.lang
(链接)文件,然后将它们转换为.js
.
你想要的是一个积极的后向断言。不幸的是,Javascript 不支持它们。然而,Steven Levithan 在这里的一篇博文中对此进行了介绍:http: //blog.stevenlevithan.com/archives/mimic-lookbehind-javascript
编辑:同一作者更新的文章:http: //blog.stevenlevithan.com/archives/javascript-regex-lookbehind
我不明白你到底想捕捉什么,但你可以尝试其中一些:
StringIsOneWholeWord
以 $1捕获:
/(?:^|\s|\()+My(\w+).*\)/
MyStringIsOneWholeWord
以 1 美元捕获:
/(?:^|\s|\()+(My\w+).*\)/
MyStringIsOneWholeWord *
以 1 美元捕获:
/(?:^|\s|\()+(My\w+.*)\)/
StringIsOneWholeWord *
以 1 美元捕获:
/(?:^|\s|\()+My(\w+.*)\)/