(W[AY]|C[AO])(\\s+\\d{5})
Run Code Online (Sandbox Code Playgroud)
因此,这当前解析以W或C开头的状态,然后是邮政编码.但是,它将所有这些作为一个组返回,如示例WA 98121 CA 56679将返回组1是WA 98121而组2是CA 56679.
如何解决此问题以在group1 WA group2 98121 group3 CA group4 56679中检索
通常,您希望在单个匹配中捕获搜索"短语"的所有部分,并使用组分解短语的各个部分,处理匹配,然后再次匹配下一个短语.因此,我将通过向您展示如何使用此方法进行编码来回避您的问题.
这是一些可运行的代码,演示了如何正确匹配和使用组:
// Regex to match a "state zip" sequence, and capture each part in its own group
String regex = "(W[AY]|C[AO])\\s+(\\d{5})";
// Some sample input
String input = "blah blah WA 98121 blah blah CA 56679 blah blah";
Matcher matcher = Pattern.compile(regex).getMatcher(input);
while (matcher.find()) { // move to next match, if one exists
String state = matcher.group(1);
String zip = matcher.group(2);
// Work with state and zip values
System.out.println("State = " + state + ", zip = " + zip);
}
Run Code Online (Sandbox Code Playgroud)
输出:
State = WA, zip = 98121
State = CA, zip = 56679
Run Code Online (Sandbox Code Playgroud)
请注意,捕获的正则表达式组编号为1.
仅供参考,小组0是整场比赛.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |