我试图使正则表达式用于提取文本中Delhi
处的单词sending to: GK Delhi
,sending to:
是固定的,我不想在GK
位置捕获任何内容。在我的情况下,实际上GK
是一个单词,我应该做的是:(?<=sending to: \w )Delhi
,表示如果单词以sending to:
开头并以Delhi
结尾,然后返回Delhi。
请帮助我解决此问题。
最佳答案
三分\w
匹配单个单词字符。使用\w+
匹配一个或多个或\w*
匹配零个或多个单词字符。
不要忘记DK
和Delhi
之间的空间:\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/