私の問題のために適切な正規表現を作成しようとしていて、明らかに奇妙な問題に遭遇しました。Java Regexの先読みに時間がかかりすぎる
は
私の目標は、文字列の両端からカンマを削除するには..です私は私がやろうとしているかを説明しましょう。 E、g、文字列, ,, ,,, , , Hello, my lovely, world, ,, ,
はちょうどHello, my lovely, world
になるはずです。
私はこれを達成するために、次の正規表現を用意しています (\w+,*? *?)+(?=(,?\W+$))
これは、正規表現のバリデータで魔法のように動作しますが、私は、Androidデバイス上でそれを実行しようとしているとき、matcher.find()
機能を見つけるために、〜の1分間ハング適切な試合...私は仮定 は、問題は、私が使用している肯定先読みであるが、私はちょうど最初からと最後に個別にカンマをトリミングするよりも、任意のより良い解決策を見つけることができませんでした:
output = input.replaceAll("^(,?\\W?)+", ""); //replace commas at the beginning
output = output.replaceAll("(,?\\W?)+$", ""); //replace commas at the end
です私は肯定的な先読みで逃している何かがあるn Java正規表現?最初と最後にコンマの間で文字列セクションを取得するにはどうすればよいですか?
arghh ...私は一致するグループを欠場する可能性がどのように.. :(どうもありがとう、私は私の正規表現の知識をブラッシュアップしました... –