[英]Cannot match specific group in JavaScript regex
我正在使用Rainbow.js库向LaTeX代码添加语法突出显示,如下所示:
Rainbow.extend('latex', [
{
'name': 'comment',
'pattern': /%.*$/gm
},
{
'name': 'storage.function',
'pattern': /\\[A-z@]+/g
},
{
'matches':
{
1: 'entity.name.function',
3: 'entity.class'
},
'pattern': /(\\(begin|end))\s*\{(.*?)\}/g
}
], true)
但是,即使按我所看到的其他方式,该组也已被捕获,但它无法突出显示#3
组。 任何想法可能出了什么问题吗? 为什么要匹配第一组而不匹配第三组?
您的问题是您忘记了逃脱第二个括号,因此它应该是/(\\\\(begin|end\\\\))\\s*\\{(.*?)\\}/g
。
但是您只有两个组,第一组(\\\\(begin|end\\\\))
和第二组(.*)
。 如果您不需要获取组的内容,则可以使其不捕获(这样可以提高性能),请参阅什么是不捕获的组? 问号后跟冒号(?:)是什么意思? 。
对于Az
范围,它不像a-zA-Z
那样起作用,请参阅字符类 。 您应该使用带有标志i
的az
范围,这意味着您忽略大小写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.