用于提取字符串的java正则表达式

时间:2018-06-05 19:47:45

标签: java regex

我有一些标题如下。我需要在' Bug'之后仅提取数字。正则表达式。

Bug 1234 - description
Bug1234 - description
Bug 1234  description
BUG 1234 - description
Bug 1234: description
Bugxxxx: description

数字后的字符可以是我期望的任何非字符。我注意到在我们的错误标题中,我看到了三个非字符':', '-', ' '

有没有办法用java正则表达式来提取数字?

最后一个用例' Bugxxxx'应该是一个空字符串返回,因为' xxxxx'不是数字。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以将此正则表达式Bug\\s?(\\d*)与Pattern.CASE_INSENSITIVE标志一起使用来提取数字。它将在第一组。例如

String foo = "Bug 1234 - description";
Pattern pattern = Pattern.compile("Bug\\s?(\\d*)", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(foo);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}

答案 1 :(得分:0)

您可以按照以下方式操作:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {

    public static void main(String[] args) {
        String subject = "Bug 1234 - description";
        Pattern bugNumber = Pattern.compile("(?i)bug\\s*([0-9]+)");

        // find the bug#
        Matcher matcher = bugNumber.matcher(subject);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

}