我试图在文本中Delhi
的地方提取正则表达式
sending to: GK Delhi
,其中sending to:
已修复,我不想捕获GK
处的任何内容。实际上GK
在我的案例中将是一个单词,我所做的应该是:(?<=sending to: \w )Delhi
,意味着如果单词以sending to:
开头并以Delhi
结尾然后返回德里。
请帮我解决这个问题。
答案 0 :(得分:2)
三分,
\w
匹配单个字符。使用\w+
匹配一个或多个或\w*
以匹配零个或多个单词字符。 DK
和Delhi
之间的空格:\s+
。 (?<=
构造是正面外观,而非负面构造。 所以正则表达式看起来像这样:
(?<=sending to:\s*\w+\s+)Delhi
请注意,任意长度的lookbehind仅支持极少数正则表达式引擎,但您没有说明您正在使用的工具。
更新:
Java不支持任意长度的lookbehind表达式。 你有的可能性是:
匹配的文字将始终为Delhi
(成功匹配时)。因此,如果您只是检查匹配,那么您可以使用正则表达式:sending to:\s*\w+\s+Delhi
。
如果您希望以后将正则表达式扩展到其他城镇,那么您可以使用capturing group。正则表达式将是,例如sending to:\s*\w+\s+(Delhi|Mumbai)
,在Java代码中,您将通过matcher.group(1)
获取城市名称。
如果您需要更详细的建议,请发布您使用正则表达式的实际Java代码。