私はRegExがあまり得意ではありませんが、2つの引用符の間にないすべての空白を選択する正規表現(Javaで使用するため)を誰かがくれますか?私は文字列からそのような空白をすべて削除しようとしているので、これを行うための解決策はすべて機能します。
例えば:
(これは「正規表現の文」のテストです)
なるはず
(thisisatest「正規表現の文」)
これが機能する単一の正規表現置換です:
\s+(?=([^"]*"[^"]*")*[^"]*$)
置き換えられます:
(this is a test "sentence for the regex" foo bar)
と:
(thisisatest"sentence for the regex"foobar)
引用符をエスケープできる場合は、さらに詳細な正規表現でうまくいくことに注意してください。
\s+(?=((\\[\\"]|[^\\"])*"(\\[\\"]|[^\\"])*")*(\\[\\"]|[^\\"])*$)
これは入力を置き換えます:
(this is a test "sentence \"for the regex" foo bar)
と:
(thisisatest"sentence \"for the regex"foobar)
(それはまた、エスケープバックスペースで動作することに注意してください。(thisisatest"sentence \\\"for the regex"foobar)
)
言うまでもなく(?)、これはそのようなタスクを実行するために実際に使用すべきではありません。単純な線形解が存在する一方で、それは人の目を出血させ、2次時間でタスクを実行します。
簡単なデモ:
String text = "(this is a test \"sentence \\\"for the regex\" foo bar)";
String regex = "\\s+(?=((\\\\[\\\\\"]|[^\\\\\"])*\"(\\\\[\\\\\"]|[^\\\\\"])*\")*(\\\\[\\\\\"]|[^\\\\\"])*$)";
System.out.println(text.replaceAll(regex, ""));
// output: (thisisatest"sentence \"for the regex"foobar)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加