0

My string is:

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

The regex I'm trying to create should extract these numbers:

125, 175, 476

I did it by looking at this example but there must be a better one.

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

3 回答 3

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());
}
于 2013-01-29T20:30:31.557 回答
3

而不是replacing所有你不需要的东西,你可以使用PatternMatcher类来提取你需要的东西。

提取括号之间数字的正则表达式模式将是: -

\(\d+\)

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

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

于 2013-01-29T20:08:41.997 回答
1

轻微变化:

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

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

Java RegEx 测试页面上进行测试

于 2013-01-29T20:17:03.657 回答