Java Regex从给定的String中提取单词

时间:2017-12-04 06:07:40

标签: java regex string

我需要从给定的字符串中提取一个单词。在这种情况下,String可能以不同的方式出现。例如:

“签名是指测试ID 69043 abcd。签名是指测试ID 1001”

“签名是指测试ID

69043 defg。签名是指测试ID 1001"

“签名是指测试

id 69043.“

此外,测试ID可能不会小写。如果我可以忽略它是小写还是大写,那会更好。它可能会作为测试ID,TEST ID以及

我暂时写了'test id([0-9] +)'

我想从这些给定的字符串中提取“测试ID号”。有时它可以在字符串中有多个“测试ID号”。一些时间字符串有多行,因为它出现在一个段落中。

1 个答案:

答案 0 :(得分:3)

您可以在此处使用正式的Java模式匹配器,使用以下不区分大小写的模式:

(?i)test\s+id\s+(\d+)

请考虑以下代码段:

String input = "The Signature refers to test id 69043 abcd. ";
input += "The Signature refers to test id 1001";
String pattern = "(?i)test\\s+id\\s+(\\d+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);

while (m.find()) {
   System.out.println("Found value: " + m.group(1) );
}

这正确输出两个ID:

Found value: 69043
Found value: 1001

Demo