我有一个字符串:
154545K->12345K(524288K)
假设我想从此字符串中提取数字。
该字符串包含位置154545
的{{1}}组,位置0
的{{1}}和位置12345
的{{1}}。
使用正则表达式1
,我需要提取位于524288
的{{1}}。
我用这个得到了理想的结果:
2
但是,有没有其他简单直接的方法来实现保持正则表达式相同\\d+
(不使用组计数器)?
答案 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());
}