2013-02-01 67 views
1

我是regex的新手。我要尋找的正則表達式相匹配下面的模式和提取字符串,字符串的Java正則表達式模式

key1=test1 
key2="test1" // which will extract test1 stripping quotes 
key3=New test 
key4=New" "test // which will extract New" "test - as it is if the quotes come in between 

我試圖與\\s*(\\S+)\\s*=\\s*(\\S+*+),但不能肯定是否存在如何包括引號。任何幫助將非常感激。

回答

2

這裏有沒有正則表達式的解決方案,以避免嵌套的報價問題:

String extractValue(String input) { 
    // check if '=' is present here... 
    String[] pair = input.split("=", 2); 
    String value = pair[1]; 
    if (value.startsWith("\"") && value.endsWith("\"")) { 
     return value.substring(1, value.length() - 1); 
    } 
    return value; 
} 

基本上,這也不是沒有正則表達式,因爲使用split()的,但它沒有使用正則表達式你打算使用它的方式。

0

你可以使用^([^=]+)=("([^"]*)"|([^"].*))$,但答案會顯示在第三或第四組,取決於值是否被引用,所以你需要檢查兩者並且拉取哪一個不爲空。

+0

你會得到'鍵=「VA \」略「'? – jlordo

+0

字符串中提到的無一人逃脫報價... – jgm

+0

好了,但你沒」給出正則表達式:)類似'/ ^([^ =] *)=(「(?:\\。| [^」\\] +)*「| [^」] *)$ /'應該處理逃脫雙引號(雖然沒有逃脫其他字符) – jgm

0

對於正則表達式,如果您想在您的正則表達式中包含",只需使用\\"將其轉義即可。無論你正在努力實現,測試,直接先在http://www.regexpal.com/