2011-04-05 75 views
1

文本文件包含塊:刪除文本塊,在記事本正則表達式++

<tr> 
    <td>waitForElementPresent</td> 
    <td>//div</td> 
    <td></td> 
</tr> 
<tr> 
    <td>assertElementPresent</td> 
    <td>//div</td> 
    <td></td> 
</tr> 

我想用正則表達式刪除所有塊在記事本+字assertElementPresent它:

<tr>*assertElementPresent*</tr> 

誰可以幫我正則表達式?

+0

正則表達式對於HTML解析不是很有用;那些其他的字符串('// div'等)總是一樣的,還是可以變化? (我非常想把它作爲一個副本來關閉它:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Piskvor 2011-04-05 12:33:57

+0

我不認爲他關心解析它......畢竟這是一個文本編輯器。 – BoltClock 2011-04-05 12:41:29

+0

@BoltClock:我不確定我注意到在最初的版本中;這是可能的,我錯過了。 – Piskvor 2011-04-05 12:44:58

回答

1
<tr>.*?assertElementPresent.*?</tr> 

應該是一個很好的開始(注意非常規匹配),但是,它很脆弱。

+0

不管他們是貪婪還是不明智,但這應該起作用。 – BoltClock 2011-04-05 12:41:16

+0

@BoltClock:默認情況下,正則表達式匹配貪婪 - 所以如果你跨線匹配,它將匹配第一個'',然後是大部分文本,然後assertElementPresent,然後是文本的其餘部分,然後是最後一個''。可能不是OP想要的。 – Piskvor 2011-04-05 12:41:47

+0

它不工作..因爲正則表達式需要搜索更多的行 – Daan 2011-04-05 12:45:29

1
<tr>(?!.*<tr>.*).*?assertElementPresent.*?</tr> 

它已經過測試與RADRegExr。以前的建議解決方案也選擇前一行。

+0

NOtepad ++不支持多行正則表達式,並且在斷言之前/之後。 – stema 2011-04-05 14:45:27

+0

有沒有其他解決方案沒有lookAhead構造? – 2011-04-05 14:56:05

+0

在記事本+ +我不知道這個問題的解決方案。 – stema 2011-04-05 18:56:17