用于在括号之间提取3位数的正则表达式

时间:2013-01-29 20:05:30

标签: java regex

我的字符串是:

Frequency/FA ID VerifiedFA0 FAID5(125)/FA1 FAID7(175)/FA2 FAID1(476)

我正在尝试创建的正则表达式应该提取这些数字:

125, 175, 476

我是通过查看this example来做到的,但必须有一个更好的。

myString.replaceAll(".+\\(([0-9]+)\\).+\\(([0-9]+)\\).+\\(([0-9]+)\\).*","$1,$2,$3")

3 个答案:

答案 0 :(得分:3)

您可以使用PatternMatcher类来提取您需要的内容,而不是replacing您不需要的所有内容。

在括号中提取数字的正则表达式模式是: -

\(\d+\)

+量词用于匹配1 or more个数字的重复。如果您只想匹配3个数字,那么您可以将{3}量词用于\d: - \(\d{3}\)

您可以使用Matcher#find()方法应用此正则表达式模式以获取该字符串中的所有数字。我将实施任务留给你。

答案 1 :(得分:3)

检查出来:

String s = "Frequency/FA ID VerifiedFA0 FAID5(125)/FA1 FAID7(175)/FA2 FAID1(476)";
Pattern patt = Pattern.compile("\\(\\d+\\)");
Matcher match = patt.matcher(s);
while(match.find()){
    System.out.println(match.group());
}

答案 2 :(得分:1)

轻微改变:

这在括号内找到3位数:((\ d \ d \ d))

实际的字符串值(在java中)是:"(\\(\\d\\d\\d\\))"

Java RegEx Test page

上进行测试