2

場合によっては、文字列内の1つまたは複数の単語を削除する必要があります。たとえば、私の文字列はincabcincdefinc inc. incです。このために、との両方を削除する必要がinc.ありincます。つまり、出力はである必要がありますincabcincdefincincつまり、次の条件に従ってすべてを削除します。

<space>inc<space>
<space>inc<.>
<space>inc<end string>
<space>inc
4

1 に答える 1

2

あなたはおそらくこのようなもので逃げることができます:

str = str.replaceAll("[ ](?:inc|ltd|corp)\\b\\.?", "");

角かっこは、間にあるスペース文字をより見やすくするためにのみ使用されます。スペースが保持されている限り、省略できます。\\bあなたの条件は、事業体の拡張の後に単語の境界()があると主張することによって満たされます。これは、次に来る文字、数字、またはアンダースコアがないことを意味します(これはすべての条件をキャプチャします)。次に、パターンはリテラルピリオド()も含めようとしますが、(\\.)がないかどうかは関係ありません?。すべてが空の文字列に置き換えられます。最初の条件では、スペースが一致して削除されないことに注意してください。スペースがにSomeCompany inc incなりSomeCompanyincます。

大文字と小文字を区別せずに拡張機能を探したい場合は、より長い構文を使用する必要があります。

Pattern pattern = Pattern.compile(
    "[ ](?:inc|ltd|corp)\\b\\.?",
    Pattern.CASE_INSENSITIVE
);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll("");
于 2012-11-18T12:49:12.233 に答える