這是兩個字符串類型的,我可以在輸入得到:爲什麼這個java的正則表達式不工作,因爲我想?
String mex1 = "/ABCD/YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI";
String mex2 = "/ABCD/YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI/ORDERS/9865432342990160";
落入兩種可能的情況下,以*/some_word/some_number *沒有它
我寫了這個正則表達式這是給因此我不明白:
String mex=//<one of two input cases as already explained>
Pattern p = Pattern.compile("(/ABCD/)(.+)(/\\w+/\\d+)?");
Matcher m = p.matcher(mex);
if(m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2)); // this the group I would like to retrieve...
}
,其結果是:
mex2
/ABCD/
YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI
mex1
/ABCD/
YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD
這不是我所期望的特別與mex2,其中我想要檢索的字符串被截斷。 此外,爲什麼在包含邊界結果後匹配find = false?
Pattern p = Pattern.compile("^(/ABCD/)(.+)(/\\w+/\\d+)?$");
感謝
它不會被截斷。嘗試添加夫婦或println語句System.out.println(m.group(3));的System.out.println(m.group(4));你會看到。 –
您的第二個捕獲組在最後需要一個空格,因此它會在輸入的最後一個空格後停止捕獲。 – Howard
我總是得到組計數= 3,但是用mex1組3是空的,組4總是提高出界限的異常。 – Leonardo