2011-09-30 69 views
0

我在下面的佈局一些代碼,即時通訊使用textcrawler做一個查找和替換正則表達式改變文本

<a> 
Name=LineA 
epsium 
ask 
answer 
line=10 
color=red 
</a> 

<a> 
Name=LineB 
Color=Blue 
</a> 

...

現在的問題是正則表達式我需要什麼使用,以便除去之間<a> and </a>

+0

你能告訴我們你試過的東西嗎? –

+0

我試過(。*),但它選擇了整個東西 – EvenPrime

+1

爲什麼第二塊代碼比第一塊更重要? '。*?'得到第一塊。而且你不需要括號。 – sln

回答

1
<a>(\s*?Name\=LineB[\S\s]*?)</a> 

它捕獲與所述TE開始之間幷包括<a></a>標籤的所有文本代碼的第二塊xt Name=LineB

+0

我認爲你會走向正確的方向,除非我不能匹配/硬編碼字符的數量,我想在標籤之間捕獲名字LineB – EvenPrime

+0

然後@sln是對的:'(\ s * Name \ = LineB。* ?)'應該匹配第二塊。 – Utensil

+0

試過,仍然無法獲得塊:( – EvenPrime

1

在Perl中,我會做:

$str =~ s~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~${1}New text$2~s; 

第一組包含第二塊<a></a>,第二組後一切之前的一切。

在PHP中:

$str = preg_replace('~^(.*?<a>.*?</a>.*?)<a>.*?</a>(.*)$~', "${1}New text$2", $str); 
+0

謝謝,這是所有偉大的,但我不知道如果「TextCrawler」使用Perl或PHP – EvenPrime

+0

@ThinkingCap:我不知道TextCrawler但嘗試與正則表達式搜索和替換字段中的「$ {1}新文本$ 2」。 – Toto

+0

+1或's〜^(。*?。*?。*?)。*?(。*)$〜$ { 1}新的正文文本$ 2〜s',如果只是替換之間的文本。 – sln

0
preg_replace("/<body>([\s\S]*.*)<\/body>/",$replace,$origional); 

這將替代body標籤之間的全部內容。

+0

請不要將[解決]添加到您的答案,這是爲了讓別人來決定... – NigelK