gpt4 book ai didi

java - 正则表达式:修剪直接以数字开头的所有字符串,除非字符串属于预定义的字符串集

转载 作者:行者123 更新时间:2023-12-01 05:56:33 24 4
gpt4 key购买 nike

我需要清理一些地址以进行匹配。该过程的一部分是从门牌号中删除不需要的后缀,例如:

mainstreet 4a --> mainstreet 4. 

但是我不想要:

618 5th Ave SW  --> 618 5 Ave SW 

换句话说,有一些字符串(目前:st、nd、rd、th)我不想删除。执行此操作的最佳方法是什么(正则表达式或其他方式)?

没有异常(exception)的工作环正则表达式将是:

a = a.replaceAll("(^| )([0-9]+)[a-z]+($| )","$1$2$3"); //replace 1a --> 1

我考虑过首先搜索并用特殊字符替换特殊情况,同时将引用保留在 map 中,然后执行上述正则表达式,然后使用引用 map 进行反向替换,但我正在寻找更简单的解决方案。

谢谢

最佳答案

您可能可以通过负向前瞻来做到这一点:

a = a.replaceAll("(^| )([0-9]+)(?!th|nd|etc)[a-z]+($| )","$1$2$3"); //replace 1a --> 1

或者用负前瞻/后瞻来完成这一切:

a = a.replaceAll("(?<=^| )([0-9]+)(?!th|nd|etc)[a-z]+(?= |$)", "$1"); //replace 1a --> 1 but not 2nd --> 2

关于java - 正则表达式:修剪直接以数字开头的所有字符串,除非字符串属于预定义的字符串集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787612/

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