我正在尝试匹配下面字符串的粗体部分,它代表一个城市。
1795 新测试博士测试测试怀尔德伍德,密歇根州 48769-1100
Dr 和 Test 之间有两个空格,起始部分应位于两个空格之后,并在逗号之前结束。
我觉得我已经非常接近正确,但不能 100% 正确,因为它在测试之前包含了空格字符。
(?=\s{2})[\w+\s]*[^,]
以上是我到目前为止所拥有的,而且许多其他替代方案也不起作用,或者它们仍然包含我在开始时不想要的空白字符。
我觉得我错过了一些简单的东西,但即使在查看了很多地方之后,我似乎也找不到与此模式匹配的正则表达式。
我也知道这可以通过分割和子字符串轻松完成,但不幸的是,要求是正则表达式,因为这是用于数据库驱动的自动化应用程序,并且格式应该能够动态更改,而不需要部署,因为代码更改。
最佳答案
您需要向后查看空格而不是向前查看,因为您希望比赛在空格之后立即开始。从那时起,您可以简单地对不是逗号的任何内容进行贪婪匹配:
(?<=\s{2})[^,]*
*
是贪婪的,会消耗尽可能多的字符,在逗号之前立即结束匹配。
关于java - 正则表达式匹配双空格之后、逗号之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29187839/