Java 如何使用正则表达式删除破折号和空格?

Java 如何使用正则表达式删除破折号和空格?,java,regex,Java,Regex,我在删除代码中的破折号和空格时遇到问题。例如:我希望J.D史密斯公司成为JDSmith,或者迈克·琼斯公司成为MikeJones。下面是我目前拥有的代码 Pattern p = Pattern.compile("[\\.$|,|;|'|-|\\s|-]|\\b(\\s|LLC|Company|Incorporated|Co|Manufacturer|The|Limited|Ltd|Inc|Chemicals|Solutions|-\\s)\\b", Pattern.CASE_INSENSITIV

我在删除代码中的破折号和空格时遇到问题。例如:我希望J.D史密斯公司成为JDSmith,或者迈克·琼斯公司成为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这样的词似乎已经不存在了,但算法似乎被空格绊倒了。对于任何多余的代码,我深表歉意,我对此还是有点陌生

除非要匹配|字符,否则不要在[]字符类中使用|

没有必要在那里呆两次

-在[]字符类中具有特殊含义,因此需要将其转义或放在第一位或最后一位

。在[]字符类中没有特殊含义,因此无需转义它

\s匹配所有空格,但您不想替换换行符,因此请改用\h

不需要在上半部分已经涉及的正则表达式的下半部分中匹配\s或-

总而言之,这意味着:

[\h.$,;'-]\b?:LLC |公司|股份有限公司|制造商|有限公司|有限公司|化学品|解决方案\b 请参阅。

除非您希望匹配|字符,否则不要在[]字符类中使用|。-为什么有-在其中两次?-您知道-在[]字符类中有特殊意义,对吗?所以你需要逃避它或者把它放在第一位或者最后一位。在[]字符类中没有特殊含义,因此无需转义它。