2014-09-26 70 views
0

我想要一个特殊的“评论”语法,并带有特别的亮点。持久正则表达式与崇高文本突出显示2

例如:

我使用的崇高文字2.我发现这个持续的正则表达式亮点,似乎做的正是这一点,但我似乎无法弄清楚如何说....

" highlight anything between <!--x and x--> " 

到目前为止,我可以得到这个基本的字符串,“哟”来突出显示,并且我尝试了一堆正则表达式模式,但唉,我看不出来得到它! (没有使用正则表达式太多,我的搜索条件不具体足够多)

{ 
    "regex": [{ 
     "pattern": "yo", 
     "color": "ff0000", 
     "ignore_case": false 
    }] 
} 


这个工作......但我不明白。

{ 
    "regex": [{ 
     "pattern": "(?<=<!--x).*?(?=x-->)", 
     "color": "ff0000", 
     "ignore_case": false 
    }] 
} 

我会很感激任何方向。 - @sheriffderek

https://github.com/skuroda/PersistentRegexHighlight

+0

什么是d输入和输出 – vks 2014-09-26 16:21:26

+0

(?<= <! - x)。*?(?= x - >) – sheriffderek 2014-09-26 16:56:51

+1

你说这个工作'(?<= <! - x)。*?(?= x - >)',但你不明白吗?它使用了一个后面和一个向前看,两者都被排除在比赛之外(即它不会被突出显示),但一切都在补间将会。 – sln 2014-09-26 18:18:38

回答

1

所以,好像你有一个可行的解决方案,但你正在寻找一个解释? (如果我误解了这个问题,请纠正我)。

让我们打破正则表达式的各种成分:

(?<= <!--x ) . *? (?= x--> ) 
  • <!--xx-->是文字字符串,在文本中直接出现。

  • (?<= subpattern)被称为lookbehind断言。它要求匹配的文本以子模式开头,但它不包含返回的匹配文本中的子模式。在这种情况下,这意味着<!--x必须出现在突出显示的文本之前。

  • (?= subpattern)类似地被称为lookahead断言。完全一样的东西,它要求子模式在匹配之后,但不包含在其中。
  • .除了换行的字符(匹配这可能是也可能不是你想要什么
  • *?non greedy repeat,这意味着它将匹配之前的任何数量的图案(.在这种情况下),但是,如果它有多种选择匹配什么的将选择最短的工作
相关问题