Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在某一组字符后匹配2个字符,但不匹配该组中的任何字符_Regex_Markdown_Sublimetext_Oniguruma - Fatal编程技术网

Regex 在某一组字符后匹配2个字符,但不匹配该组中的任何字符

Regex 在某一组字符后匹配2个字符,但不匹配该组中的任何字符,regex,markdown,sublimetext,oniguruma,Regex,Markdown,Sublimetext,Oniguruma,我正在努力改进Github风格的Markdown语法,在Sublime文本中突出显示,它使用Oniguruma正则表达式引擎。具体来说,我正在尝试改进**bold**/\uuuu bold\uuu部分的匹配。因为在.tmLanguageXML文件中使用正则表达式是一种PITA,所以我使用了它的格式。以下是原始正则表达式: name: markup.bold.markdown begin: (?x)(?:^|\s|\G)(\*\*|__)(?=\S)(?=(<[^>]*+>| (

我正在努力改进Github风格的Markdown语法,在Sublime文本中突出显示,它使用Oniguruma正则表达式引擎。具体来说,我正在尝试改进
**bold**
/
\uuuu bold\uuu
部分的匹配。因为在
.tmLanguage
XML文件中使用正则表达式是一种PITA,所以我使用了它的格式。以下是原始正则表达式:

name: markup.bold.markdown
begin: (?x)(?:^|\s|\G)(\*\*|__)(?=\S)(?=(<[^>]*+>| (?<raw>`+)([^`]|(?!(?<!`)\k<raw>(?!`))`)*+\k<raw>|
  \\[\\`*_{}\[\]()#.!+\->]?+| \[((?<square>[^\[\]\\]| \\.| \[ \g<square>*+ \])*+\](([ ]?\[[^\]]*+\])| (\([ \t]*+<?
    (.*?)>?[ \t]*+((?<title>['"])(.*?)\k<title>)?\))))|(?!(?<=\S)\1).)++(?<=\S)\1)
end: (?<=\S)(\1)
captures:
  '1': {name: punctuation.definition.bold.markdown}
但如果粗体文本前面紧跟着括号、方括号或大括号,则不会:

I like bold (**like this**) but it isn't!

因此,我想我应该将
[
{
添加到第一组:

begin: (?x)(?:^|\s|\G|[\(\[\{])...
但是发生了-括号/括号/大括号匹配,导致高亮显示问题:

当前行为:

使用新的正则表达式:

正如您所看到的,在不应该高亮显示的情况下,开始部分会高亮显示


所以,我的问题是:我应该如何改变事情,使开头部分不突出显示,但所需的文本是?

您当前的正则表达式未能突出显示里面的文本**您的意思是什么?我只问您。如果您回答我会更好。@Avinash很抱歉,我有一个会议。我不确定您的意思是什么“未能突出显示文本…”。它只匹配regex101上的最后一个字母,但在Sublime中效果很好,正如您在第一张图像中所看到的。我尝试了您的版本4,但现在没有突出显示粗体-`这是粗体文本'或
这是(**插入**)文本
begin: (?x)(?:^|\s|\G|[\(\[\{])...