我应该为以下模板使用哪种正则表达式?
What kind of regex should I use for the following template?
我正在编写一个 Java 程序来计算一个人的平均工资,并在模板中打印每月的扣除额。模板是这样的:
==============BILL==============
| NAME: xXxX BRANCH : xxx |
| |
| Month 1 : xxx.xxx |
| Month 2 : xxxx.xx |
| <other Months> |
| Month 12 : xxx.xx |
| |
| TOTAL : ____________ |
================================
我正在使用以下模式尝试捕获元素:
//template is stored in string.
String[] lines = msg.split("\n");
Pattern p = Pattern.compile("[xX\._]+");
for(String line : lines){
Matcher m = p.matcher(line);
if(m.find()){
System.out.println(m.group());
}
else{
System.out.println("no match found...");
}
}
我得到的输出是这样的:
xXxX
xxx.xxx
xxxx.xx
xxx.xx
____________
但是,我无法匹配 BRANCH 的 'xxx'。我如何提取该模式?
改变
if(m.find()){
System.out.println(m.group());
}
到
while(m.find()){
System.out.println(m.group());
}
因为 NAME
和 BRANCH
在同一行。
Matcher#find()
将在字符串中找到第一个匹配项,而不是所有匹配项。要获得所有匹配项,您必须多次调用 find()
。
我正在编写一个 Java 程序来计算一个人的平均工资,并在模板中打印每月的扣除额。模板是这样的:
==============BILL==============
| NAME: xXxX BRANCH : xxx |
| |
| Month 1 : xxx.xxx |
| Month 2 : xxxx.xx |
| <other Months> |
| Month 12 : xxx.xx |
| |
| TOTAL : ____________ |
================================
我正在使用以下模式尝试捕获元素:
//template is stored in string.
String[] lines = msg.split("\n");
Pattern p = Pattern.compile("[xX\._]+");
for(String line : lines){
Matcher m = p.matcher(line);
if(m.find()){
System.out.println(m.group());
}
else{
System.out.println("no match found...");
}
}
我得到的输出是这样的:
xXxX
xxx.xxx
xxxx.xx
xxx.xx
____________
但是,我无法匹配 BRANCH 的 'xxx'。我如何提取该模式?
改变
if(m.find()){
System.out.println(m.group());
}
到
while(m.find()){
System.out.println(m.group());
}
因为 NAME
和 BRANCH
在同一行。
Matcher#find()
将在字符串中找到第一个匹配项,而不是所有匹配项。要获得所有匹配项,您必须多次调用 find()
。