繁体   English   中英

无法匹配JavaScript正则表达式中的特定组

[英]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那样起作用,请参阅字符类 您应该使用带有标志iaz范围,这意味着您忽略大小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM