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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (633)

我有一些标题如下。我只需要在“Bug”之后提取带有正则表达式的数字。

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

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

有什么方法可以用java正则表达式来提取数字呢?

最后一个usecase‘Bugxxxx’应该是返回的空字符串,因为‘xxxxx’不是数字。

提问于
用户回答回答于

你可以使用这个regexBug\\s?(\\d*)与模式。_提取数字的不敏感标志。这将是第一组。例如

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));
}
用户回答回答于

如下所示:

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));
        }
    }

}

扫码关注云+社区

领取腾讯云代金券