1

次のパラメータを使用して、txtファイルで特定の行を検索するために、この拡張式を理解しようとしています。

  • 7桁の数字を含む行、
  • 前後を数字以外の文字で囲み、
  • 3桁目と4桁目の間に1つ以上のダッシュまたはアンダースコアがあります。

これらは一致する必要があります:

x555-1212x
x555__1212x
x555-_-1212x 

しかし、これらは一致しません:

x999555-1212x
x555-1212999x x999555-1212999x
555-121x
x55-1212
5551212

これが私が試したもので、チェックスクリプトによると必要な7行のうち5行が表示されます

egrep '[^0-9]+[[:digit:]]{3}[-_]+[[:digit:]]{4}[^0-9]+' foo.txt

これでどこが間違っているのかわかりません...制限が厳しすぎて、Tabなどの特定の空白文字を削除しているかどうか。誰かアイデアはありますか?

4

1 に答える 1

1

パターンを持つ行に関心があるため、一致するパターンで開始^および終了$正規表現演算子を使用できます。

正規表現:^.*?(\D|^)(\d{3}[-_]+\d{4})(\D|$).*?$
ここで説明されたデモ: http://regex101.com/r/gQ0cE2

于 2013-03-23T12:30:40.597 に答える