[英]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.