2013-07-24 50 views
2

其他論壇成員,用於標記大寫的正則表達式小心數據

我正在使用NotePad ++,並在其他文本數據中嵌入了一堆警告。將CAUTION數據與其他文本數據區分開來的兩個常量是兩個因素。一種是CAUTION文本總是在大寫文本中,第二種是CAUTION文本始終以大寫字母「CAUTION」開頭。以下是我正在描述的一個小例子:

Bla bla bla bla bla。小心不要在沒有仔細閱讀用戶手冊的情況下對機器進行維護。 Bla bla bla bla bla bla。

是否有可能爲一個正則表達式找到下面的文字中許多不同的變化:

注意不要進行維護機器沒有先閱讀使用說明書。

然後用下面的替換:

<caution><para>DO NOT PERFORM MAINTENANCE ON MACHINE WITHOUT FIRST READING THE OWNER'S MANUAL.</para></caution> 

我需要幫助編碼正則表達式是執行以下操作:

  1. 是能夠針對總是以詞「警告」開始數據(大寫)
  2. 能夠定位「CAUTION」一詞後面的所有大寫文本,直到它轉換爲小寫文本。
  3. 添加XML標籤後,刪除位於開頭的單詞「CAUTION」。
  4. 不會被單詞「Bla」(即「MANUAL.Bla」)中的大寫字母「B」所迷惑。 換句話說,它不包括在查找結果中開始下一句的第一個大寫字母。這種貪婪的擔憂怎能消除?

這樣的RegEx可能嗎?基於我所描述的內容,在世界上如何才能使RegEx變得足夠聰明以僅查找與注意相關的文本?任何信息將不勝感激。提前致謝。

回答

2

我沒有notpad ++具體地說,所以儘管在他們的正則表達式執行任何怪癖,這似乎這樣的伎倆:

CAUTION ([A-Z](([^a-z])+\s+)+) 

與更換

<caution><para>$1</caution></para> 

看到它在此採取行動:

http://regexr.com?35mku

+0

很好,它捕捉了標點符號+1 –