使用我发现的SO上的示例代码,以及我正在搜索的字符串,我正在尝试捕获一组飞机类及其座位.输入文件具有J28W36Y156形式的飞机配置,这意味着28个J(商务)级座位,36 W(高级经济舱座位)和156个Y(经济舱)座位.
我正在使用的Java代码如下:
s = "J12W28Y156";
patternStr = "(\\w\\d+)+";
p = Pattern.compile(patternStr);
m = p.matcher(s);
if (m.find()) {
int count = m.groupCount();
System.out.println("group count is "+count);
for(int i=1;i<=count;i++){
System.out.println(m.group(i));
}
}
Run Code Online (Sandbox Code Playgroud)
正则表达式似乎只捕获LAST类座位配置即.Y156.如何获得此正则表达式以捕获多个组中的所有类/席位组合.这是否与我需要指定的"贪婪"匹配有关?我想输出就像一个数组,例如.
{J12,W28,Y156}
多谢你们.
你的第一个错误是错误的解释\w.这是javadoc所说的:
\w A word character: [a-zA-Z_0-9]
这意味着\w捕获字母和数字.因此,在您考虑到字母总是大写的情况下,我会使用以下模式:
[A-Z]\d+
现在它将捕获第一个位置标记.所以你应该自己实现循环:
Pattern p = Pattern.compile("([A-Z]\\d+)");
Matcher m = p.matcher(str);
while (m.find()) {
String place = m.group(1);
// A12, W28 etc is here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3717 次 |
| 最近记录: |