java中一个用例的正则表达式,从DANNO开始,以integer结束
我试图创建一个正则表达式来从字符串中获取一个数字。我使用并使用了以下正则表达式java中一个用例的正则表达式,从DANNO开始,以integer结束,java,regex,Java,Regex,我试图创建一个正则表达式来从字符串中获取一个数字。我使用并使用了以下正则表达式(DANNO)[^0-9]*[0-9]*,这在他们的控制台上运行得很好,但当我尝试在java代码中使用时,它只是在某些情况下为我提供了DANNO 以下是一些示例字符串以及预期结果: N. DANNO: 1234567890 => DANNO: 1234567890 DANNO N° 1234567890 => DANNO N° 1234567890 ORDINE N 1234567890 N DANNO
(DANNO)[^0-9]*[0-9]*
,这在他们的控制台上运行得很好,但当我尝试在java代码中使用时,它只是在某些情况下为我提供了DANNO
以下是一些示例字符串以及预期结果:
N. DANNO: 1234567890 => DANNO: 1234567890
DANNO N° 1234567890 => DANNO N° 1234567890
ORDINE N 1234567890 N DANNO 1234567890 N CLIENTE 123456 => DANNO 1234567890
N°DANNO1234567890 => DANNO1234567890
DANNON°1234567890 => DANNON°1234567890
使用:
\bDANNO\D*(\D+)
作为正则表达式并抓取捕获的组#1@anubhava令人惊讶的是,这起作用了。非常感谢你。
public static void main(String[] args) throws ParseException {
final String regex = "(DANNO)[^0-9]*[0-9]*";
final String string = "N. DANNO: 1234567890\n"
+ "DANNO N° 1234567890\n"
+ "ORDINE N 1234567890 N DANNO 1234567890 N CLIENTE 123456\n"
+ "N°DANNO1234567890\n"
+ "DANNON°1234567890";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0)); //Prints full serach result
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i)); //Prints DANO
}
}
}
Full match: DANNO: 1234567890
Group 1: DANNO
Full match: DANNO N° 1234567890
Group 1: DANNO
Full match: DANNO 1234567890
Group 1: DANNO
Full match: DANNO1234567890
Group 1: DANNO
Full match: DANNON°1234567890
Group 1: DANNO