-1

私は正規表現に追いつこうとしていますが、以下のように作成しました。

^(.){1};(\d){4};(\d){8};[A,K]{1};(\d){7,8};(\d){8};[A-Z ]{1,};[ ,\d]{1};(\d){8};(\d){1};(\d){1}; $

サンプルは次のとおりです。

ä;1234;00126434;K;11821111;00000000;SOME TEXT ; 0;00000000;0;0;

私が読んだ限りでは

. \dはすべての文字、\dは数字、{n}およびバリエーションはn回を示し、バリエーションに応じてより多くの繰り返しを示します。

何が問題なのですか?

4

4 に答える 4

3

いくつかの提案/観察:

  • すべての s を削除できますが{1}、何もしません。
  • [A,K]A「 、,または」を意味しKます。Aとの間の任意の文字に一致させたい場合はK、 を使用します[A-K]
  • 繰り返しの周りにキャプチャ グループを配置する必要があります(\d{7,8})。7 ~ 8 桁の数字をキャプチャします。(\d){7,8}最後の桁のみをキャプチャします。
  • [ ,\d]{1}0文字列のその時点に2 つの文字 (スペースと ) があるため、正規表現で失敗します。
  • $最後のセミコロンの後に文字列にスペースが実際にない限り、 final の前のスペースを削除する必要があるかもしれません。

一致する (そして、各要素を別のグループにキャプチャする) バージョンは次のとおりです。

^(.);(\d{4});(\d{8});([A-K]);(\d{7,8});(\d{8});([A-Z ]+);([ ,\d]+);(\d{8});(\d);(\d); *$

regex101.comで動作を確認してください

于 2013-06-18T08:47:00.360 に答える
1

これを試して:

^(.){1};(\d){4};(\d){8};[A-K]{1};(\d){7,8};(\d){8};[A-Z ]{1,};[ \d]{2};(\d){8};(\d){1};(\d){1};$

ここで、正規表現で何が起こっていましたか ^(.){1};(\d){4};(\d){8};[A,K]{1};(\d){7,8};(\d){8};[A-Z ]{1,};[ ,\d]{1};(\d){8};(\d){1};(\d){1}; $

  • 最後に余分なスペースがあります$
  • -コンマではなく範囲の使用を指定するには、範囲を にする必要があります[A-K]
  • [ ,\d]範囲内 1文字に制限しました。スペース用に1文字、数字用に1文字にする{1}必要があります。{2}

{1}追加:デフォルトでは 1 つ前のトークンに一致するため、指定する必要はありません

于 2013-06-18T08:45:13.253 に答える
0

あなたのものがうまくいかない場合は、これを試すことができます:

^(.){1};(\d){4};(\d){8};[A,K]{1};(\d){7,8};(\d){8};[A-Z ]{1,};( \d){1};(\d){8};(\d){1};(\d){1};$ 
于 2013-06-18T08:45:43.480 に答える