我需要从给定的字符串中提取一个单词。在这种情况下,String可能以不同的方式出现。例如:
“签名是指测试ID 69043 abcd。签名是指测试ID 1001”
“签名是指测试ID
69043 defg。签名是指测试ID 1001"
“签名是指测试
id 69043.“
此外,测试ID可能不会小写。如果我可以忽略它是小写还是大写,那会更好。它可能会作为测试ID,TEST ID以及
我暂时写了'test id([0-9] +)'
我想从这些给定的字符串中提取“测试ID号”。有时它可以在字符串中有多个“测试ID号”。一些时间字符串有多行,因为它出现在一个段落中。
答案 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