我试图使正则表达式用于提取文本中Delhi处的单词
sending to: GK Delhisending to:是固定的,我不想在GK位置捕获任何内容。在我的情况下,实际上GK是一个单词,我应该做的是:(?<=sending to: \w )Delhi,表示如果单词以sending to:开头并以Delhi结尾,然后返回Delhi。
请帮助我解决此问题。

最佳答案

三分


\w匹配单个单词字符。使用\w+匹配一个或多个或\w*匹配零个或多个单词字符。
不要忘记DKDelhi之间的空间:\s+
请注意:(?<=构造是正面的,而不是负面的。


因此正则表达式可能如下所示:

(?<=sending to:\s*\w+\s+)Delhi


还请注意,只有很少量的正则表达式引擎支持任意长度的lookbehind,但是您并未对所使用的工具进行任何说明。



更新:

Java不支持任意长度的后向表达式。
您拥有的可能性是:


匹配的文本将始终为Delhi(匹配成功时)。因此,如果仅检查匹配项,则可以使用正则表达式:sending to:\s*\w+\s+Delhi
如果将来想将正则表达式扩展到其他城镇,则可以使用capturing group。例如,正则表达式为sending to:\s*\w+\s+(Delhi|Mumbai),在Java代码中,您可以通过matcher.group(1)获得城市名称。


如果您需要更详细的建议,请发布有关如何使用正则表达式的实际Java代码。

关于java - 字词范围或\w在负向后看,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33480367/

10-13 05:05