2017-11-08 7 views
-1

文字列をテストして式にマッチするかどうかを確認する必要がありますが、私はRegExを熟知していません。パターンがどんなものであるべきかの助けを求めています。言い換えればRegExパターンに関するガイダンスが必要です

TEIJB502 -OK 
TT3010 -OK 
TT3110 -OK 
TT692A -FAIL 
ZT60101 -OK 
AT1 -OK 
AT101A -FAIL 
AT101B -FAIL 
AT1786A -FAIL 
AT1786B -FAIL 

、合格/末尾のサフィックスの存在に基づいて失敗:以下 は、文字列とどのように私は、彼らがテストを願っの一部です。

これで、RegExを実行して上のものを渡す必要があり、失敗したものを失敗させます。

私はそれが非生産的だと知っていますが、テーブルの別々の列に各文字列をどのように解析するかを決定する方法が必要です。 IE:正規表現と

Type Number Suffix 
TEIJB 502 
TT  3010 
TT  692  A 
+0

私たちはあなたが再現したいパターンの種類を知ることが有用である可能性があります。 RegExは、特定のパターンを識別してデータから分離する場合に便利です。この情報がある場合は、質問を編集してください。これが混乱していると思われる場合は、「8文字の長い文字列とその中に数字だけを一致させるRegEx」の例があります。 –

+0

私は任意の長さの文字を使用できます。アルファ文字と数字の間に始まります。アルファベットで終わる場合と終わらない場合があります。私は何を考えていたのかというと、文字列が任意の数のアルファと数字のいずれかに一致する場合、次に1つの方法を解析し、そうでなければ任意の数のアルファ、任意の数アルファの任意の数をもう一度と私はそれを別の方法で解析します。 RegExがこれを行う最善の方法でない場合、私は混乱を招いて申し訳ありません。私は喜んでしようとし、別の方法を研究する –

+0

だから、あなたはどのような言語を使用していますか? –

答えて

0

頻繁誤謬は1つが、複数のより明確かつ簡潔になるとき、単一の正規表現を使用する必要が考えています。この場合、それはちょうど反対です:1つのかなり単純な正規表現は、列を非常に効率的に分離することができます。

キャプチャグループの読み方は、使用している言語によって異なりますが、キャプチャグループは正規表現をサポートするすべての言語で使用できます。用途:

^([A-Z]+)(\d+)([A-Z])?$ 
0

だけあなたの上記の例を見ることによって:

TEIJB502 -OK 
TT3010 -OK 
TT3110 -OK 
TT692A -FAIL 
ZT60101 -OK 
AT1 -OK 
AT101A -FAIL 
AT101B -FAIL 
AT1786A -FAIL 
AT1786B -FAIL 

私は、Windows 10 PC上でメモ帳++で次のようでした:

実行メモ帳++;

press ctrl + h;そして

は、正規表現モード

Find what: (^\D+)(\d{1,5})(\D) 

にしていることを確認した後、

Replace with: \1\t\2\t\3\t 

私はあなたがそれ自分で微調整を確信しています。これは私があなたの与えられた例を私自身で実験する方法です。

私のアプローチは、私がグループを捕捉し、それらを保持し、それらの間にタブを挿入することです。

私は最初に(^\D+)で非桁の文字を探しています。これは私の最初のキャプチャグループです。

私は(\d{1,5}で2番目のキャプチャグループの数字を探しています。これは、私が1から5桁の数字を探していることをNotepad ++に伝えることです。

私は(\D)で最後のキャプチャグループでもう一度非数字の文字を探しています。これは、最後に接尾辞を見つけることです。

置換するパターンは、キャプチャグループを維持するよう指示します。\1\2\3ですが、その間にタブ\tを挿入します。従って\1\t\2\t\3\t

「あなたの検索する」パターンは、私のものより一般的である必要があります。とにかく助けてくれることを願っています。

よろしく、 M.

関連する問題