2012-01-16 60 views
2

我有輸入字符串正則表達式來選擇子

DISPLAY_MSG='Kumar + sajdhjhasd - Type' 
       and ID=156090 
       and RESOURCE_KEY='Ascend.ElementMaster.kumar_type.desc' 
       and LOCALE='en_US' 

我只想DISPLAY_MSG='Kumar + sajdhjhasd - Type'但使用這種表達

DISPLAY_MSG='[\\w\\W\\s\\S]* 

匹配整個字符串匹配。我怎樣才能在這兩個單一的代碼之間只選擇字符串

DISPLAY_MSG= 

回答

2

您應該使用ungreedy量詞。試試這個:

DISPLAY_MSG='[\\w\\W\\s\\S]*?' 
+0

謝謝,您的解決方案正在工作......但我對我的表達做了小改動以包含並從DSIPLAY_MSG替換爲下一個,並且(可以發生一次或多次)DISPLAY_MSG ='[\\ w \\ W \\小號\\ S] *?「[\\秒] *和{0,1}。但它不匹配。可能是什麼情況? – Pokuri 2012-01-16 09:14:47

3

這個正則表達式是很無意義的。

[\w\W\s\S]表示:匹配一個字符,如果它是字母數字或非字母數字或空白或非空白字符。完全相同的結果可以通過(?s).來實現。

只有在JavaScript中(其中(?s)選項,允許點匹配換行符不可用,它使用懶惰量詞有意義寫[\s\S]代替,但[\w\W\s\S]絕對是大材小用。

所以,更好的解決方案將

DISPLAY_MSG='(?s).*?' 

但更妙的是實際指定哪些是允許的引號之間,這通常是什麼報價:

DISPLAY_MSG='[^']*'