2017-02-17 6 views
0

ファイルから1つずつ入力レコードを検証したいと思います。ファイルに10,000〜20,000件のレコードが含まれている可能性があります。厳密なn文字と一致する正規表現は、改行文字を含む

レコードには、大文字、小文字、ドット、スペース、数字のみを使用できます。そしてレコードは新しい行の文字で終わる。

正規表現で、上記の5つのパラメータを持つレコードのみを、両方のタイプ(\ nまたは\ r \ n)の新しい文字を含めて一致させることができます。レコードに他の文字が含まれている場合は、私が言及したものは一致してはいけません。

私はこの正規表現を試しました。

[A-Z\d\- ]{120}\s+$ 

10文字の例を挙げてください。

1) Input 
AAAA12.0 A\nor\r\n 

Regex should match for given input(1) because of exact ten characters plus new line character(one is possible at a time) 

2)Input 
AA-A13.0 AAA\nor\r\n 

Regex should match for given input(2) because number of characters are more than 10 

しかし、この正規表現はいつか失敗します。私の5つの要件をより厳格にするために、この正規表現にどのような提案をしていますか?

+0

これはうまく見えますが、それはおそらくまだ考慮されていない事柄です。このサイトは良いテスト場です:https://regex101.com/ –

+0

それの背後にあるコードは何ですか?ドットにマッチさせる必要がある場合は、パターンにパターンを含めることをおすすめします。また、文字列の終わり(行?)を '$'でチェックし、 '^'(文字列/行頭の始まり)アンカーを使用しません。正確なサンプル入力テキストがなければ、あなたを助ける方法が明確ではありません。 –

+0

@WiktorStribiżew、私はドットを使用しています。なぜなら、レコードの小数値も来るからです。あなたはそうだと思いますか?この正規表現はレコード120文字と改行文字(\ nまたは\ r \ n)とのマッチングには問題ありませんか? – kelly

答えて

0

次の式:

^[-.A-Z \d]*\r?$ 

マッチライン全体は、ハイフン、ドット、資本A-Z、スペース、および数字で構成され、\nまたは任意に\r\nで終わる場合。

+0

@ Luv2code ..この正規表現を使用して、入力データを120文字以上に制限する方法を教えてください。 121文字に改行文字を加えたものがある場合、正規表現は機能しません。 – kelly

+0

これは元の仕様ではありませんでした。 120文字以下に制限するには、アスタリスクを '{0,120}'に置き換えます(ほとんどの正規表現エンジンではゼロを省略することができますが、 '{、120}')。 – Luv2code

+0

@ Luv2code ..入力レコードに120文字以上が入っていると機能しません。それはそれらを可能にする。 – kelly

関連する問題