当人物落后时,不要匹配正则表达式

时间:2017-07-16 01:14:01

标签: regex

当前正则表达式:[[\/\!]*?[^\[\]]*?]

在以下测试用例中成功匹配[size=16][/size]但不匹配[abc]的目标。

[size=16]1234[/size]
[abc](htt)

Regex目前符合第三个测试用例;这是特定于始终遵循括号。所以我在考虑使用if group's next char == "(", do not match

的逻辑

但是 - 我真的不知道如何在正则表达式中编写这样的逻辑...

2 个答案:

答案 0 :(得分:1)

MarshalByRefObject向前或向前查看是否有匹配然后继续(或不继续),具体取决于是否匹配。

否定看起来提前断言如下所示:

AppDomain

坚持到最后,给它提供parantheses,你很高兴:

(?!regex)

Look assertions

答案 1 :(得分:1)

你想要的是一个消极的前瞻"。

A"环视"是一个匹配的组,但不包括在结果中。它们以(?开头,以)结尾。

有两种类型的环视:前瞻和后瞻:

  • A&#34; lookbehind&#34;向后看,并在<之后立即用?表示(即?<),但这不是你在这里的目的。
  • A&#34; lookahead&#34;展望未来,如果<之后没有?,则为默认值。

两种类型都可以是正面的或负面的:

  • 积极的外观要求包含的群组出现以形成匹配,并以=表示。
  • 否定的外观要求所包含的组不存在以形成匹配,并以!表示。

具有正面或负面前瞻或后面的基本结构后,中间的内容是正常的正则表达式语法,就像它是任何其他组一样,所以在你的情况下你需要一个转义左括号\(

将所有内容放在一起,你只需要在你拥有的内容中加以解决:(?!\()