我在从我的代码中删除破折号和空格时遇到问题。例如:我希望 JD Smith Company 只是 JDSmith,或者 Mike-Jones Inc 只是 MikeJones。下面是我目前拥有的代码。Pattern p = Pattern.compile("[\\.$|,|;|'|-|\\s|-]|\\b(\\s|LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions|-\\s)\\b", Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(dncMfgName.getStringCellValue());String name = m.replaceAll("");像 LLC 和 Inc 这样的词似乎消失了,但算法似乎被空格绊倒了。对于任何多余的代码表示歉意,我对此仍然有点陌生!
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
不要在字符类
|
内部使用[]
,除非您想匹配该|
字符。没必要进去
-
两次。-
在字符类中具有特殊含义[]
,因此您需要对其进行转义(或将其放在最前面或最后)。.
在字符类中没有特殊含义[]
,因此无需转义它。\s
匹配所有空格,但您不想替换换行符,因此请改用\h
。无需在正则表达式的后半部分中匹配
\s
或(已在前半部分中介绍)。-
总而言之,这意味着:
[\h.$,;'-]|\b(?:LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions)\b
请参阅演示。
添加回答
举报
0/150
提交
取消