我需要抓住" 456456"在
Status: Created | Ref ID: 456456 | Name: dfg | Address: 123
没有空格
我有一个正在运行的正则表达式,后来发现java不支持\ K.
\bRef ID:\s+\K\S+
有没有办法获得对K的支持?
还是一个不同的正则表达式?
任何帮助将非常感激。
答案 0 :(得分:2)
有没有办法获得对K的支持?
您可以想象使用提供它的第三方正则表达式库。你无法在标准库的public string SelectedItemProperty {get; set;}
类中获得它。
还是一个不同的正则表达式?
我不确定你是否认识到"捕获"是正则表达式空间中的技术术语,它直接关系到这个问题。这确实是通常的方式来描述你所描述的内容,但你呈现的正则表达式根本不做任何捕获。要使用Java正则表达式捕获所需的文本,您希望将括号放入模式中,围绕要捕获其匹配项的部分:
Pattern
如果匹配成功,您可以通过\bRef ID:\s+(\S+)
Matcher
方法访问捕获的群组:
group()
请注意,您需要将String s = "Status: Created | Ref ID: 456456 | Name: dfg | Address: 123";
Pattern pattern = Pattern.compile("\\bRef ID:\\s+(\\S+)");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
String refId = matcher.group(1);
// ...
}
与正则表达式一起使用,而不是matcher.find()
,因为后者会测试整个字符串是否匹配,而前者仅测试是否存在匹配的子字符串。