私は自分の問題に対して適切な正規表現を作成しようとしていますが、どうやら奇妙な問題に遭遇しました。
私がやろうとしていることを説明させてください。
私の目標は、文字列の両端からコンマを削除することです。たとえば、文字列, ,, ,,, , , 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
Java正規表現の前向きな先読みに欠けているものはありますか?最初と最後のコンマの間の文字列セクションを取得するにはどうすればよいですか?