为什么这个java的正则表达式不工作,因为我想?
问题描述:
这是两个字符串类型的,我可以在输入得到:为什么这个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+)?$");
感谢
答
试试这个
(/ABCD/)([^\/]+(/\\w+/\\d+)?)
的[^\/]
将捕获任何东西,但/
它不会被截断。尝试添加夫妇或println语句System.out.println(m.group(3));的System.out.println(m.group(4));你会看到。 –
您的第二个捕获组在最后需要一个空格,因此它会在输入的最后一个空格后停止捕获。 – Howard
我总是得到组计数= 3,但是用mex1组3是空的,组4总是提高出界限的异常。 – Leonardo