我有一些标题如下。我需要在' Bug'之后仅提取数字。正则表达式。
Bug 1234 - description
Bug1234 - description
Bug 1234 description
BUG 1234 - description
Bug 1234: description
Bugxxxx: description
数字后的字符可以是我期望的任何非字符。我注意到在我们的错误标题中,我看到了三个非字符':', '-', ' '
。
有没有办法用java正则表达式来提取数字?
最后一个用例' Bugxxxx'应该是一个空字符串返回,因为' xxxxx'不是数字。
感谢。
答案 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));
}
}
}