我想匹配的字符串看起来是这样的:贪婪正则表达式匹配
<$Fexample text in here>>
这个表达式:
<\$F(.+?)>{2}
然而,也有一些情况下,我的反向引用的内容包括“>”,因此这样的事情:
<$Fexample text in here <em>>>
只在反向引用匹配example text in here <em
。我需要做些什么才能有条件地返回有或没有这些html实体的正确backrefernce?
我想匹配的字符串看起来是这样的:贪婪正则表达式匹配
<$Fexample text in here>>
这个表达式:
<\$F(.+?)>{2}
然而,也有一些情况下,我的反向引用的内容包括“>”,因此这样的事情:
<$Fexample text in here <em>>>
只在反向引用匹配example text in here <em
。我需要做些什么才能有条件地返回有或没有这些html实体的正确backrefernce?
您可以在正则表达式添加开始和结束锚为:
^<\$F(.+?)>{2}$
尝试
<\$F(.+?)>>(?!>)
的(?!>)
力量只有最后>>
在>>>..>>>
长序列将被匹配。
编辑:
<\$F(.+?>*)>>
也有效。
如果你想知道,这是负面的前瞻。请参阅:[Lookaround](http://www.regular-expressions.info/lookaround.html) – NullUserException 2010-08-31 06:24:24
+1:但我认为<\$F(.+?)>> +会更高效,因为没有回溯。 – CurtainDog 2010-08-31 06:35:21
@帘:但那么多余的'>'不会在捕捉组中。 – kennytm 2010-08-31 06:38:49
请注意,不是恩真正做什么(我觉得)你想干什么,你将不得不解释合式支架表达式,这在一般语言中是不可能的。
换句话说,<$Fexample <tag <tag <tag>>> example>> oh this should not happen>
将返回example <tag <tag <tag>>> example>> oh this should not happen
作为捕获组。
是的,你是35秒加快+1投票 – Bart 2010-08-31 06:24:22
我不知道你是否可以从这个问题中得到这个结果,否则就丢掉?就足够了 – CurtainDog 2010-08-31 06:37:24
我忘记提到锚的缺席是故意的。该字符串可能出现在该行的任何位置。 – 2010-08-31 09:52:11