2010-11-05 30 views
1

我有一個標記文件,它可能有如下記錄表達式#定期以下

<test> <code> abcd </code> </test> 
<test> efgh </test> 

我如何提取一塊測試標籤的同時..這意味着我要提取的測試標籤在上述兩種情況下,是否具有唯一內容或其他嵌套的標籤太...

+1

即使您不明白StackOverflow上的格式,至少也要嘗試在問題的純文本版本中編寫所有必要的信息,以便其他人可以爲您正確格式化它。 – 2010-11-05 20:46:14

+0

要正確格式化,請編輯您的文章,突出顯示您想要格式化的內容,然後單擊帶有0和1的按鈕(代碼按鈕)。或者用4個空格縮進(並確保在它之前有一個空行)。 – 2010-11-05 20:47:05

+0

我現在編輯它,如果我錯了,或者如果你需要澄清更多,進一步編輯它。 – 2010-11-05 20:48:42

回答

0

嘗試正則表達式:

"\\bstart-tag:test\\s+(.*?)\\s+end-tag:test\\b" 

重要的一點是,她? e意味着匹配不應該是貪婪的,否則它可以捕獲多個標籤。

+0

@Pan:編輯您的問題! – 2010-11-05 20:52:13

1

嘗試

Pattern regex = Pattern.compile("<test>(.*?)</test>", Pattern.DOTALL); 

這將會失敗,不過,如果<test>標籤本身可以被嵌套(<test> ... <test>...</test> ... </test>)。

?使前面的*量詞懶惰,即。即它將匹配儘可能少的字符,因此一次只能匹配一個標籤。

+0

Tim,*非常好*,用於在最小匹配時正確記錄故障模式。人們總是犯錯。解決問題的方法是使用'(?xs)(?:(?!< /? test>)。)*'。是的,我知道我離開最大的開始。沒關係。最大量詞通常比最小量詞運行得更快,我的超前保證我不會超過它。 – tchrist 2010-11-06 00:05:00

相關問題