2011-01-09 10 views
1

私はある数値が別の値よりも大きいかどうかを調べる正規表現が必要です。 私は文章で書くのと全く同じです。(if 10>8) ...正規表現:数値が大きい場合は一致しますか?

明らかに、私のスニペットは起こらないでしょうし、私は自分でそれを並べ替えるための正規表現の経験がありません。これは正規表現で可能ですか?

^[1-9]+[0-9]+$ 

ありがとうございます!

+3

なぜ正規表現でそれをしたいですか? –

+0

処理しなければならないデータについて詳しく教えてください。 – Ikke

+0

1つの数字が一定であれば、それは可能です(醜いですが!)。どちらも可変であれば、不可能だと言って、sepp2kは正しいと思います。 – marcog

答えて

3

私があなたの問題を正しく理解していれば、2番目が最初のものより大きい任意の長さの2つの連続する数字と一致する正規表現が必要です。これは正規表現ではできません。これは明らかに通常の言語ではなく、一般的な拡張(後方参照、再帰参照)のどれもそれを変えるほど強力ではありません。

一部の正規表現の実装(perlなど)では、ホスト言語のコードを正規表現に埋め込むことができます。その場合、もちろん述語num1 < num2をperlコードとして埋め込むことはできますが、私はそれが正規表現としての解決策ではないと考えています。

7

これは、正規表現が解決するには良い問題ではありません。数値を抽出し数値で比較します。

+0

私はそれを行うことはできません比較不能なので、残念なことに – Industrial

+4

あなたの問題については、詳細を教えてください。データのサンプル、使用しているプログラミング言語やツールなど。 –

1

私が正しく理解しているのであれば、.htaccessなどの内部でこれらの数値を比較しなければなりません。 unhealty比較するには、評価された文字列に数値が必要です: "^ [0-9] [1-9] [0-9] $"が一致すると "5 12 "あなたは5であることを理解できるように、同じ長さの12未満

比較数は100

あなたのコンテキスト(imacrosのがあるよりよく説明することができた場合は、私が思うの下に数字だけのために狂気ではありません、。 htaccess ...)誰かがこれを行うためのより良い方法を提案することができます。

0

正規表現では単純なことではありません。あなたがプログラミングしている言語は、regexp構文の拡張が任意のコードを埋め込むことを許しているかもしれません。例:Perl:

$_ = '54 55'; 
say 'matched' if /\A(\d\d) (\d\d)(?(?{$1 >= $2})(*FAIL))\z/; 

これは成功しますが、56 55は成功しません。 https://stackoverflow.com/a/30936388/626804ではもう少し説明します。

これは良い味かいい考えかは別ですが、本当に欲しいのであれば、この種の比較をいわゆる「正規表現」にマッチさせることができます。

関連する問題