在某些情况下,我必须删除字符串中的一个/多个单词。例如,我的字符串是incabcincdefinc inc. inc
. 为此,我需要同时删除inc.
和inc
。即,输出应该是incabcincdefinc
. 即,inc
根据以下条件删除所有 s:
<space>inc<space>
<space>inc<.>
<space>inc<end string>
<space>inc
在某些情况下,我必须删除字符串中的一个/多个单词。例如,我的字符串是incabcincdefinc inc. inc
. 为此,我需要同时删除inc.
和inc
。即,输出应该是incabcincdefinc
. 即,inc
根据以下条件删除所有 s:
<space>inc<space>
<space>inc<.>
<space>inc<end string>
<space>inc
你可能可以摆脱这样的事情:
str = str.replaceAll("[ ](?:inc|ltd|corp)\\b\\.?", "");
方括号仅用于使中间的空格字符更明显,只要保留空格,就可以省略它们。通过断言\\b
业务实体扩展后有一个单词边界 ( ) 来满足您的条件。这意味着接下来没有字母、数字或下划线(它会捕获您的所有条件)。然后该模式还尝试包含一个文字句点 ( \\.
),但不关心是否有非 ( ?
)。一切都替换为空字符串。请注意,在您的第一个条件中,我不匹配并删除空格,因为那会使SomeCompany inc inc
become SomeCompanyinc
。
如果要不区分大小写地查找扩展名,则需要使用更长的语法:
Pattern pattern = Pattern.compile(
"[ ](?:inc|ltd|corp)\\b\\.?",
Pattern.CASE_INSENSITIVE
);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll("");