我有几个粗略形式的字符串:
[some text] [some number] [some more text]
我想使用Java Regex类提取一些数字形式的文本。
我大致知道我想要使用什么正则表达式(尽管欢迎所有建议)。我真正感兴趣的是Java调用,以获取正则表达式字符串,并在源数据上使用它来生成某个数字的值。
编辑:我应该补充说,我只对单个some number感兴趣。源字符串很短,我不会去寻找某个数字的多次出现。
发布于 2008-10-25 21:47:26
完整示例:
private static final Pattern p = Pattern.compile("^([a-zA-Z]+)([0-9]+)(.*)");
public static void main(String[] args) {
// create matcher for pattern p and given string
Matcher m = p.matcher("Testing123Testing");
// if an occurrence if a pattern was found in a given string...
if (m.find()) {
// ...then you can use group() methods.
System.out.println(m.group(0)); // whole matched expression
System.out.println(m.group(1)); // first expression from round brackets (Testing)
System.out.println(m.group(2)); // second one (123)
System.out.println(m.group(3)); // third one (Testing)
}
}
由于您正在寻找第一个数字,因此可以使用下面的regexp:
^\D+(\d+).*
m.group(1)
会给你返回第一个数字。请注意,有符号数字可以包含减号:
^\D+(-?\d+).*
发布于 2011-11-14 09:06:43
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex1 {
public static void main(String[]args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("hello1234goodboy789very2345");
while(m.find()) {
System.out.println(m.group());
}
}
}
输出:
1234
789
2345
https://stackoverflow.com/questions/237061
复制相似问题