2013-03-25 84 views
0

我正在尋找編寫特定模式組的正則表達式。例如,對於字符串:正則表達式,直到一個模式的所有內容

"File=ZZZZZZZZZZZZZZ QQQQQQQQQQ.txt size=ten check=true test=true" 

我想組:

File=ZZZZZZZZZZZZZZ QQQQQQQQQQ.txt 
size=ten 
check=true 
test=true 

通常情況下我只能找空間,但如果我的文件名中有一個空格,然後這不起作用。所以我需要匹配所有東西,直到我碰到任何字符再加上=。

回答

2

您可以按[ ](?=\w+=)拆分。圓括號中的內容是一個「前瞻性斷言」,只有當後面的內容看起來像一個參數時,它纔會匹配一個空格。

如果您打算進行匹配而不是拆分,(?:[^ ]| (?!\w+=))+應該可以工作。 (?!...)部分是一個超前斷言,所以空間只會匹配如果以下任何東西看起來像一個參數。

請注意,並非所有正則表達式引擎都支持前瞻斷言。大部分都是,特別是PCRE風格的......但請檢查正則表達式引擎的文檔以獲取正確的語法。 (另:我使用[ ],因爲Markdown不喜歡內聯代碼中的前導空格,如果你想允許任何空白字符分隔參數,你可以使用空格代替(不包括括號),也可以使用\s

+0

嗨cHao,我可能應該提到我使用Java,我剛剛嘗試過使用以下網站,它不起作用http://www.regexplanet.com/advanced/java/index.html 有什麼想法? – Adam 2013-03-25 17:25:15

+0

是的。這種模式不匹配;它被分裂。使用它像'String [] pieces = yourString.split(「(?= \ w + =)」);'。如果你匹配,它只會匹配空格,這有點用處不大。剛剛進行編輯以包含應該可用於匹配的表達式。 – cHao 2013-03-25 17:27:55

相關問題