正则表达式匹配但不捕获中间部分
Regexp to match but don't capture middle part
我正在尝试在 Sublime Text 2 中创建自己的主题以突出显示 CSS 语法。我只剩下 keyframes
.
@-webkit-keyframes spin { /* some rules */ }
@-moz-keyframes colorize { /* some rules */ }
@-ms-keyframes spin { /* some rules */ }
@-o-keyframes spin { /* some rules */ }
@keyframes colorize { /* some rules */ }
我想突出显示首字母 @
和单词 keyframes
而不突出显示引擎前缀,例如 -webkit-
或 -moz-
,所以只有 @keyframes
必须 returned.
正确的正则表达式是什么?
我试过了:
((?<=-webkit-)|(?<=-moz-)|(?<=-ms-)|(?<=-o-)|)keyframes
但这不包括 @
,甚至根本不包括 return Sublime 文本中的 keyframes
。
更新----
多亏了Cheruvian,我才意识到眼前的一切。
Sublime 的解析器结构是(我在意识到<key>name</key>
是什么之后添加了注释):
<dict>
<!-- Regexp pattern -->
<key>match</key>
<string>\s*(@)(-(webkit|moz|ms|o)-)?(keyframes)</string>
<!-- Referencing to the groups captured above -->
<key>captures</key>
<dict>
<!-- 1st group captured -->
<key>1</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>keyword.control.keyframes.css</string>
</dict>
<!-- 2nd group captured -->
<key>2</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>punctuation.definition.keyword.css</string>
</dict>
<!-- n group captured -->
<key>n</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>some.name.css</string>
</dict>
</dict>
</dict>
由此,我所要做的就是对正则表达式和 select 我想要的组进行分组,并为它们提供一些独特的引用字符串。
假设 sublime 使用捕获组,你可以使用:
(@).*?(keyframes)
正则表达式捕获组用括号表示。
(来自phone稍后会尝试清理)
我正在尝试在 Sublime Text 2 中创建自己的主题以突出显示 CSS 语法。我只剩下 keyframes
.
@-webkit-keyframes spin { /* some rules */ }
@-moz-keyframes colorize { /* some rules */ }
@-ms-keyframes spin { /* some rules */ }
@-o-keyframes spin { /* some rules */ }
@keyframes colorize { /* some rules */ }
我想突出显示首字母 @
和单词 keyframes
而不突出显示引擎前缀,例如 -webkit-
或 -moz-
,所以只有 @keyframes
必须 returned.
正确的正则表达式是什么?
我试过了:
((?<=-webkit-)|(?<=-moz-)|(?<=-ms-)|(?<=-o-)|)keyframes
但这不包括 @
,甚至根本不包括 return Sublime 文本中的 keyframes
。
更新----
多亏了Cheruvian,我才意识到眼前的一切。
Sublime 的解析器结构是(我在意识到<key>name</key>
是什么之后添加了注释):
<dict>
<!-- Regexp pattern -->
<key>match</key>
<string>\s*(@)(-(webkit|moz|ms|o)-)?(keyframes)</string>
<!-- Referencing to the groups captured above -->
<key>captures</key>
<dict>
<!-- 1st group captured -->
<key>1</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>keyword.control.keyframes.css</string>
</dict>
<!-- 2nd group captured -->
<key>2</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>punctuation.definition.keyword.css</string>
</dict>
<!-- n group captured -->
<key>n</key>
<dict>
<!-- Referencing name -->
<key>name</key>
<string>some.name.css</string>
</dict>
</dict>
</dict>
由此,我所要做的就是对正则表达式和 select 我想要的组进行分组,并为它们提供一些独特的引用字符串。
假设 sublime 使用捕获组,你可以使用:
(@).*?(keyframes)
正则表达式捕获组用括号表示。 (来自phone稍后会尝试清理)