2015-03-25 38 views
0
String allString = " I1 + I6 + I9 + I8 + I3 + I2 + I20 + I21 + I18 + I23 + I28 + I27 + I31 + I24 + I12 + I15 + I14 + I13 + I16 + I11 " 

如何检查java正则表达式模式中的“I1”。输入模式是“I1”,“I6”.....“I11”。在这种情况下,“I1”,“I12”,“I15”,“I14”,“I13”,“I16”“I11”是相同的“I1”输入模式。怎么解决?如何匹配只有等于模式,换句话说不包含模式

+0

@AvinashRaj他希望像包含I1 *模式的数字相同的模式,所以正则表达式可能是'I1。\ d *' – 2015-03-25 04:00:09

+0

我的问题是如何检查匹配模式 – 2015-03-25 04:08:02

+0

你可以发布一些预期的输出和你的尝试 – vks 2015-03-25 04:21:40

回答

0

您可以使用简单的正则表达式模式I1\d*,即I1后跟任意数量的数字。

String allString = "..."; 

Pattern pattern = Pattern.compile("I1\\d*"); 
Matcher matcher = pattern.matcher(allString); 

while (matcher.find()) { 
    System.out.print(matcher.group() + ", "); 
} 

在Java中,我们需要逃避\过,因此最终的格局将成为I1\\d*

输出:

I1, I18, I12, I15, I14, I13, I16, I11, 
0

I1(?!\d)将匹配I1但不是I11,I12等

String allString = " I1 + I6 + I9 + I8 + I3 + I2 + I20 + I21 + I18 + I23 + I28 + I27 + I31 + I24 + I12 + I15 + I14 + I13 + I16 + I11 "; 
    Pattern p = Pattern.compile("I1(?!\\d)"); 
    Matcher matcher = p.matcher(allString); 
    matcher.find(); 
    System.out.println(matcher.group(0)); 

输出:

I1