我想找到第二個<BR>
標記並從此處開始搜索。我如何使用正則表達式來做到這一點?正則表達式:從第二個開始
<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>
我想找到第二個<BR>
標記並從此處開始搜索。我如何使用正則表達式來做到這一點?正則表達式:從第二個開始
<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>
前面加上<BR>[^<]*(?=<BR>)
你的正則表達式,或者如果你想第二<BR>
後開始,如刪除先行部分:<BR>[^<]*<BR>
。第二<BR>
之後,但在第三
查找文字:<BR>[^<]*<BR>([^<]*)<BR>
這個發現「金都」的<BR>404<BR>waldo<BR>
。
注:我專門用於上述代替非貪婪.*?
因爲一旦上述開始不爲你工作,你應該stop parsing HTML with regex,並且當這種情況發生.*?
將隱藏。然而,非貪婪的量詞也沒有得到很好的支持,如果你願意,你總是可以改變它。
通常解決這類問題是使用 「捕獲組」。大多數正則表達式系統不僅可以提取整個匹配序列,還可以提取其中的子匹配。這是通過將(
和)
中的部分表達式分組來完成的。舉例來說,如果我用下面的表達式(這是在JavaScript中,我不知道你想成爲什麼樣的工作語言,但在大多數語言的基本思想工作):
var string = "<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>";
var match = string.match(/<BR>.*?<BR>([a-zA-Z]*)/);
然後我可以得到或者使用match[0]
(即"<BR>like <BR>Abdurrahman"
)匹配的所有內容,或者我只能使用match[1]
獲得圓括號內的部分,這給出"Abdurrahman"
。
你確定這個工作正常嗎? – uzay95 2010-01-08 07:45:11
我不確定你在找什麼。你可能想澄清你的問題。這會告訴你如何找到兩個'
'標籤,然後是你放在括號中的其他東西。例如,如果您正在尋找「父親」,搜索將是'
。*?
。*(Father)',並且第一個子字符串匹配是指它找到'Father'的地方。 http://rubular.com/regexes/12836 –
2010-01-08 08:06:30
假設你正在使用PHP,你可以使用爆炸
$str='<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>';
$s = explode("<BR>",$str,3);
$string = end($s);
print $string;
輸出上<BR>
分割你的字符串
$ php test.php
Abdurrahman<BR><SMALL>Fathers Name</SMALL>
然後你可以使用「$字符串」變量,做你想做的。
以上步驟可以用其他語言完成,也可以使用您的編程語言所具有的字符串分割方法。
這個正則表達式應該數學前兩個<br />
S:
/(\s*<br\s*/?>\s*){2}/i
所以你要麼什麼也沒有更換,或用preg_match
或RegExp.prototype.match
提取參數。
在JavaScript:
var afterReplace = str.replace(/(\s*<br\s*\/?>\s*){2}/i, '');
在PHP
$afterReplace = preg_replace('/(\s*<br\s*\/?>\s*){2}/i', '', $str);
我唯一可以肯定它會在PHP/JavaScript的工作,但它應該在一切工作...
你能告訴我什麼是這個reges的意思嗎?/(\ s *
\ s *){2} /我' 我只想學習。 –
uzay95
2010-01-08 08:21:02
Dan:這與'
'中的任何輸入文本
'都不匹配,因爲除了標籤之間的\ s之外,不允許其他任何內容。 –
2010-01-08 08:27:11
解釋/(\ S *
\ S *){2}/I /#開始正則表達式 (#開始組 \ S#空白 *#的任意數量的先前(增量零)
#文字 \ S#前面的空白 *#零個或多個 )#端基 {2}的組的#2 /#端的正則表達式 I#匹配非情況下靈敏地 (對不起我的間隔丟失) –
ternaryOperator
2010-01-08 14:55:52
謝謝你大衛。因爲我早早醒來:) – uzay95 2010-01-08 07:31:55