2016-05-19 17 views
1

値のリストが与えられていれば、それらの値に一致するRegExパターンを生成できますか?私はあなたが単一の文字列に一致するパターンを生成することを可能にするいくつかのサイトを見てきましたが、複数の入力を受け入れる何も見つかりませんでした。値のリストが与えられた場合、それらの値に一致するRegExを生成します

私は、文字で値を分割し、重複を排除し、そのグループを括弧内の文字グループに使用することが唯一の方法だと思いますが、扱いにくいようです。特殊文字。

例:

値:願わくはにさらなる情報:ABCD、ABCE、abcf、ACCD、ADCDは、

正規表現が

EDIT \ [する] C [DF]を\であろうAECD以下に述べるルーカスのXY問題を避けてください。

シリアル番号とモデルのペアの入力を受け取り、そのペアが有効かどうかを判断するためにQAを実行しています。現在の方法では、デバイスのモデルでグループ化されたシリアル番号のリストがあり、QAを実行するために各特定のモデルのシリアル番号に基づいて正規表現を現在使用しています。現在、reg exは手動で作成されています。

+1

最も簡単なのは、交替演算子( '|')で行を結合するだけです。 'abcd | abce | abcf | accd | adcd | aecd' –

+0

もちろん可能です。非常に.../abcd | abce | abcf | accd | adcd | aecd/'。私はあなたが効率的な、よりコンパクトな正規表現を作ることが可能かどうか尋ねていると思いますか? – Tibrogargan

+0

その通りです。リストは〜1000の値なので、あまりにも実用的なものと一緒に参加するか、それほど実用的ではありません。 – AQShedim

答えて

0

あなたはモデルによって許容雑誌のリストを持っている:

models: 
    $model1: [1##,2##,3##,4##] 
    $model2: [5##,643,7##,8##] 

あなたはシリアルとモデルを取得し、その後、シリアルがその特定のモデルであるかどうかをテスト:

$model=$model1, $serial=643 

あなたはでしょうプログラムで処理する関数を作成します。

validate -> 
    if $serial in models[$model] 
    return True 
    return False 

正規表現はどこですか?これに正規表現は必要ありません。

+0

正規表現を使用する理由は、リストにまだ入っていないシリアル番号をテストできるようにするためです。同じモデルの新しい機器を追加する際に、シリアル番号をテストして入力エラーに対抗するために有効かどうかを確認したいと考えています。 – AQShedim

+0

私はあなたを完全に理解していないことを知っています。しかし、彼らが範囲、すなわち600 - 699に属しているならば、正規表現はまだ私がそれをどのように解決するかではありません。私は静的な値の代わりにこれらの範囲を格納し、同様の操作を行います。 –

+0

シリアルナンバーの多くは、この796KTV1のような文字と数字が混在しているので、私たちが行っているトラックに沿っているように見えますが、厳しい範囲が機能するかどうかはわかりません。範囲にアルファベット文字を含める方法もありますか? – AQShedim

関連する問題