2012-02-12 4 views
0
{(1,2),(3,4)}; 

上記のような入力が2つのペア( '('と ')の間の整数値)のセットであることを確認するにはどうすればよいでしょうか?私の推測では、正しいシンボルの文字配列上で何らかの検索が行われているとは限りませんが、より速い方法がありますか?このような入力用のシンプルで効果的なブラケットチェッカーですか?

整数値は非常に大きいことに注意してください1よりhuger、2、3など、及び負。

+0

正規表現。 – RanRag

答えて

2

、これは重要なパフォーマンスでない場合は、迅速かつ汚い正規表現を使用することができます。

  • -?\d+は、任意の長さ(すなわち、 1桁以上)、任意に{ }負の符号によって
  • ブレースを先行し()が正規表現で特殊文字であるので、それらは(\{、等をエスケープする必要があり括弧)
  • 私の仮定には空白が許されないことです。これが真でない場合は、任意の空白\s*(0個以上の空白文字)を許可する任意の場所に正規表現を変更する必要があります。

次のように、最終的な正規表現は次のようになります。 \{\(-?\d+,-?\d+\),\(-?\d+,-?\d+\)\}

あなたも桁の値のいずれかをキャプチャする必要がある場合は、あなたがcapturing parenthesesを追加することができます。

+0

恐ろしい!しかし、なぜそれはパフォーマンスが遅いでしょうか?コードのコンパクトなラインとして確信しています – Chucky

+0

これを入力すると構文エラーが発生します: if(possFunction.matches(\ {\( - ?\ d +、 - ?\ d + \)、\ \ d +、 - ?\ d + \)\})) – Chucky

+0

正規表現の文字列を指定し、バックスラッシュをエスケープする必要があります。たとえば、 'String regexString =" \\ d + "; ... '。ダブルバックスラッシュに注意してください。 – bobbymcr

関連する問題