正则表达式模式匹配器

时间:2014-03-18 05:33:26

标签: java regex pattern-matching

我有一个字符串: 154545K->12345K(524288K)

假设我想从此字符串中提取数字。

该字符串包含位置154545的{​​{1}}组,位置0的{​​{1}}和位置12345的{​​{1}}。

使用正则表达式1,我需要提取位于524288的{​​{1}}。

我用这个得到了理想的结果:

2

但是,有没有其他简单直接的方法来实现保持正则表达式相同\\d+ (不使用组计数器)?

2 个答案:

答案 0 :(得分:1)

试试这个

String d1 = "154545K->12345K(524288K)".replaceAll("(\\d+)\\D+(\\d+).*", "$1");

答案 1 :(得分:1)

如果您希望自己的号码位于第1位,那么您可以使用find(int start)这样的方法

if (lMatcher.find(1) && lMatcher.start() == 1) {
    // Found lMatcher.group()
}

您还可以将循环转换为for循环以获取某些样板代码

String lString = "154540K->12341K(524288K)";
Pattern lPattern = Pattern.compile("\\d+");
Matcher lMatcher = lPattern.matcher(lString);


int lPosition = 2;
for (int i = 0; i < lPosition && lMatcher.find(); i++) {}

if (!lMatcher.hitEnd()) {
    System.out.println(lMatcher.group());
}