我想匹配的字符串看起來是這樣的:貪婪正則表達式匹配
<$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