java - 正则表达式模式匹配器

标签 java regex pattern-matching

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

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

该字符串包含位置 0 处的组 154545、位置 1 处的 12345524288 位于 2 位置。

使用正则表达式 \\d+,我需要提取位于 1 位置的 12345

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

String lString = "154545K->12345K(524288K)";
Pattern lPattern = Pattern.compile("\\d+");
Matcher lMatcher = lPattern.matcher(lString);
String lOutput = "";
int lPosition = 1;
int lGroupCount = 0;
while(lMatcher.find()) {
    if(lGroupCount == lPosition) {
    lOutput = lMatcher.group();
    break;
}
else {
    lGroupCount++;
}
}
System.out.println(lOutput);

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

最佳答案

试试这个

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

关于java - 正则表达式模式匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22471153/

相关文章:

Java - 日期模式匹配

machine-learning - 使用 SIFT 搜索图像数据库

scala - 为什么需要模式匹配来保存存在类型信息?

java - 在ormlite中,如何拥有外部字段和字段列?

javascript - 正则表达式通配符问题

java - 最后返回 "happen after"吗?

c# - Regex.Match 和非捕获组

ruby -\b 在 Ruby 正则表达式中的真正含义是什么?

java - Spring mongodb查询包含嵌套数组的嵌套数组

java - 在 Java Arraylist 中存储用户输入