正则表达式在字符串中查找数字的实例

时间:2015-05-29 11:20:42

标签: java regex string

我有一个类似于以下

的字符串
32686_8 is number 2

我是新手使用正则表达式并想要一些帮助。我想要两种不同的模式,首先要找到

  

32686_8

然后另一个找到

  

2

希望你能帮忙:)

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容进行匹配:

([\\d_]+)\\D+(\\d+)

并提取$1$2

请参阅DEMO

代码:

Matcher m = Pattern.compile("^([\\d_]+)\\D+(\\d+)$").matcher(str);
while(m.find())
{
  System.out.println(m.group(1));
  System.out.println(m.group(2));
}

答案 1 :(得分:0)

使用捕获组。

Matcher m = Pattern.compile("^(\\S+).*?(\\S+)$").matcher(str);
if(m.find())
{
System.out.println(m.group(1));
System.out.println(m.group(2));
}

OR

Matcher m = Pattern.compile("^\\S+|\\S+$").matcher(str);
while(m.find())
{
System.out.println(m.group());
}

^\\S+匹配开头的一个或多个非空格字符。同样,\\S+$匹配末尾出现的一个或多个非空格字符。

OR

Matcher m = Pattern.compile("\\b\\d+(?:_\\d+)*\\b").matcher(str);
while(m.find())
{
System.out.println(m.group());
}

DEMO