0

テキストTを検索し、検索文字列Sを見つけようとする正規表現パターンを作成するにはどうすればよいですか。

2つの要件があります。

  1. Sは任意の文字で作成できます。
  2. Sは文字列のどこにあってもかまいませんが、単語の一部にすることはできません。

特殊な正規表現文字をエスケープするために、検索文字列を\Qと\Eの間に配置することを知っています。

\ EMySearch_String \ Q

TでSの部分一致が見つからないようにするにはどうすればよいですか?

4

2 に答える 2

1


can't be part of a word
次のように解釈される場合は、このようにすることができます
preceded by start-of-string or space and followed by end-of-string or space

String s = "3894$75\\/^()";
String text = "fdsfsd3894$75\\/^()dasdasd 22348 3894$75\\/^()";
Matcher m = Pattern.compile("(?<=^|\\s)\\Q" + s + "\\E(?=\\s|$)").matcher(text);
while (m.find()) {
    System.out.println("Found match! :'" + m.group() + "'");
}

これは1つだけを印刷します

一致するものが見つかりました!:'3894 $ 75 / ^()'

于 2012-07-16T06:38:50.250 に答える
0

あなたが見つけようとしているものは、先読みと後読みで簡単に解決できると思います。良い説明のためにこれを見てください。

次に、少しフリップフロップのブール値がありますが、空白以外の文字(\ S)を前後に探しています。Sが文字列の先頭または末尾にある可能性があるため、スペース文字だけを検索する必要はありません。そのようです:

(?<!\S)S(?!\S)
于 2012-07-16T19:01:15.927 に答える