gpt4 book ai didi

java - 解析可能出现 2 次相同字符串的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:26 25 4
gpt4 key购买 nike

我正在解析地址字符串,发现有时街道名称中包含的单词也是有效的城市名称。我想确保任何第二次出现的城市名称始终与正则表达式中的最后一组匹配,并且正则表达式中的第一组被视为可选。

这是一些示例输入:

123 SUNNYSIDE AVENUE BROOKLYN
59 MAIDEN LANE MANHATTAN
59 MAIDEN LANE MANHATTAN 10038
39-076 46 STREET SUNNYSIDE
39-076 46 STREET SUNNYSIDE 11104
59 MAIDEN LANE MANHATTAN NY USA

理想情况下,为这些返回的正则表达式组如下:

(123 )(SUNNYSIDE)( AVENUE )(BROOKLYN)
(59 MAIDEN LANE )(null)(null)(MANHATTAN)
(59 MAIDEN LANE )(null)(null)(MANHATTAN)
(39-076 46 STREET )(null)(null)(SUNNYSIDE)
(39-076 46 STREET )(null)(null)(SUNNYSIDE)
(59 MAIDEN LANE )(null)(null)(MANHATTAN)

对于城市,我在正则表达式组中有一个列表(对于这个例子来说是简化的):

(MANHATTAN|BROOKLYN|SUNNYSIDE)

我的起始正则表达式是这样的:

(.*?)(?:\W*)(MANHATTAN|BROOKLYN|SUNNYSIDE)(?:.*)

当然输出:

(123)(SUNNYSIDE)

我正在尝试扩展它以支持上述情况,但到目前为止我尝试匹配 1 或 2 个城市的所有内容将始终匹配它找到的第一个城市作为最后一组并忽略其余部分。

地址解析有很多特殊问题,但现在我只专注于解决这一特殊情况。感谢您的帮助!

最佳答案

沿着这条路走下去就是疯狂。地址是不可解析的。在您的情况下,您可以告诉正则表达式引擎它只能匹配城市名称后的邮政编码或字符串结尾。这应该有效:

^(.*?)\s+(MANHATTAN|BROOKLYN|SUNNYSIDE)\s*(\d*)$

关于java - 解析可能出现 2 次相同字符串的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com