特定字符串后的Java Regex捕获字符串

时间:2016-06-20 16:22:26

标签: java android regex

我需要抓住" 456456"在

Status: Created | Ref ID: 456456 | Name: dfg  | Address: 123

没有空格

我有一个正在运行的正则表达式,后来发现java不支持\ K.

\bRef ID:\s+\K\S+

有没有办法获得对K的支持? 还是一个不同的正则表达式?
任何帮助将非常感激。

1 个答案:

答案 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(),因为后者会测试整个字符串是否匹配,而前者仅测试是否存在匹配的子字符串。