私は正規表現([A-Za-z0-9 ]*){1,60}
を持っています。Javaパターンマッチングで検証するのに時間がかかります
は、私が20秒(約)後...値4503212220033000600034SS SS SS,ndklfjsldfld
で
にマッチした、それはので、私は私の値で使用,
コンマでfalseを返します。
なぜ検証に時間がかかりますか?
私は正規表現([A-Za-z0-9 ]*){1,60}
を持っています。Javaパターンマッチングで検証するのに時間がかかります
は、私が20秒(約)後...値4503212220033000600034SS SS SS,ndklfjsldfld
で
にマッチした、それはので、私は私の値で使用,
コンマでfalseを返します。
なぜ検証に時間がかかりますか?
catastrophical backtrackingのため、パターンに時間がかかりすぎます。 正規表現デバッガページのregex101.comにアクセスして、舞台裏で何が起こっているのかを確認してください。
あなたのパターンは、無限の英数字記号とスペースに1〜60回一致します。これは、検証の意味で論理的ではありません。
あなたは1〜60文字の英数字またはスペースで文字列に一致する必要がある場合は時々、正規表現は良いアイデアです
s.matches("[A-Za-z0-9 ]{1,60}")
ソリューションをありがとう..それは正常に動作します... – Sathish
を使用しています。
しかし、あなたの場合は、主に最初のスペースの前後のものに興味があるようです。
なぜ、正規表現が必要なのですか?indexOf( '')を呼び出すことができます。文字列の重要な部分を区切る文字列の位置を見つけるには?
私は正規表現の使用が間違っているとは言いません(おそらく、 "バックトラッキング"問題を修正した後、必要なものです)。しかし、あまりに多くの人が正規表現を使用しているのは、それらが存在するだけなので...
彼は文字列を検証しているので、彼はそれにすべて興味があります。正規表現は間違いなくこの仕事をする最良の方法です。 –
おそらく。またはそうでないかもしれません。彼は、「パターンマッチングは検証に時間がかかりすぎます。私にとっては、正確に彼が何をしようとしているのかは分かりません。 – GhostCat
あなたのパターンは何をしたいですか?今度は**無限**の英数字とスペース** ** 1〜60倍**にマッチしています。あなたは「[A-Za-z0-9] {1,60}」を意味しましたか? –
'matches()'のcontectで使用されている場合は[Catastrophic backtracking](http://www.regular-expressions.info/catastrophic.html)です。 –