2

String.replaceAll()Java関数で使用する正規表現パターンを見つけようとしています。すべてを置き換える必要がありますが、 「26」プレフィックス%26を持つ他の番号を取得したくありません。

たとえば、私が欲しい:

"abc%26def".replaceAll(regex, "&") to return "abc&def"

- と -

"abc%2623def".replaceAll(regex, "&") to return "abc%2623def"  (no change)

このタスクを達成するために、あと数行のコードを簡単に記述できることは承知していますが、単一の replaceAll だけでこれを実行できるかどうか疑問に思っていました。

4

3 に答える 3

4

の後に別の数字が続く場合、一致を防ぐ否定先読みアサーションを使用できます ( Java ではエスケープする必要があるため、 になります)。%26\\\d

%26(?!\d)
于 2012-12-21T16:16:04.287 に答える
2

これは、否定先読みを使用して実現できます。マニュアルから:

(?!X)   X, via zero-width negative lookahead
于 2012-12-21T16:16:38.143 に答える
1

パーセントでエンコードされたオクテットのデコードを行っているようです。その場合は、以下を参照してくださいURLDecoder.decode

System.out.println(URLDecoder.decode("abc%26def", "UTF-8")

これは、スペースにも変換+されるため、目的にかなう場合とそうでない場合があります。

于 2012-12-21T16:20:09.153 に答える