2013-08-07 44 views
1

我有以下文字需要一個正則表達式來刪除模式/字符串

| 1樣式縮進普通+宋體T201_LLR_001 | 2樣式縮進普通+宋體應當接受三個三分球| 3風格縮進普通+宋體SSC_01_SRS_0001

我需要這個文本轉換爲得到三個單獨的輸出

  • T2 01_LLR_001
  • 應當接受三分
  • SSC_01_SRS_0001

我用下面的正(\S+_LLR_\d+)(.+)\t(SSC_.+)*

得到以下輸出

  • T201_LLR_001
  • | 2樣式縮進普通+宋體應當接受三個三分球| 3風格縮進普通+宋體
  • SSC_01_SRS_0001

但是,我需要擺脫的文字|2 Style Indented Normal + Courier New" and "|3 Style Indented Normal + Courier New

正則表達式有可能嗎?我不知道如何使用(?!TEXT)

+0

究竟是你的格局?對我來說,似乎你的正則表達式是爲這個例子量身定做的。 –

+0

是否應該接受文本總是以給定的模式開始,例如:是否接受:)? –

+0

請告訴我們(算法)如何選擇「接受三個指針」,以便我們能夠在字符串中唯一標識它。 – Dukeling

回答

0

對於那些誰沒有注意到它,我看到有字體和字符串,你們之間的標籤想要,這會讓問題變得更容易。

這應該給你想要的東西:

([^_\s]+_LLR_\d+)[^\t]*\t([^|]*)[^\t]*\t(SSC_.+) 

說明:

我改變\S(沒有空格),使其[^_\s](沒有下劃線或空格)。

然後你消耗T201_LLR_001

然後你消耗一切直至包括下一個選項卡,這將是|2 Style Indented Normal + Courier New

然後你消耗一切,直到|,這將是Shall accept the three pointers.並通過將其放在括號中存儲在一個組中。

然後你消耗一切直到包括下一個選項卡,這將是|3 Style Indented Normal + Courier New。然後你消費SSC_01_SRS_0001並把它放在一個組中。

Java test正確打印出來:

T201_LLR_001 
Shall accept the three pointers. 
SSC_01_SRS_0001 
+0

謝謝。我還有另一個問題。 '| 2樣式縮進普通+快遞新'(樣式信息)可能會出現多次。請你能幫助我嗎? – giboo

+0

如果它們中的每一個都被製表符分開,那麼您應該可以簡單地用'(?:[^ \ t] * \ t)+'替換第一個'[^ \ t] * \ t'。 – Dukeling

+0

再次感謝。但此更新沒有幫助輸入時,樣式信息是這樣的「| 1樣式縮進普通+快遞新\t T201_LLR_001 | 2樣式縮進普通+快遞新\t Text1 here。| 2樣式縮進普通+快遞新\t | 2樣式縮進普通+快遞新\t Text2 here。| 2樣式縮進普通+快遞新\t | 3樣式縮進普通+快遞新\t SSC_01_SRS_0001「這裏我們也有可用的樣式信息。請幫忙 – giboo

0

使用另一個組捕獲|2 Style Indented Normal + Courier New|3 Style Indented Normal + Courier New。如果需要,您甚至可以使用非捕獲組(?:)。

0

試試這個(.NET):

(?<=\|\d \w* \w* \w* \+ [a-z-A-Z0-9 ]*\t)[\w ]* 

或者這一個:

(?<=\|\d [a-zA-Z+ ]*\t)[\w ]* 
相關問題