文字列から正確に 5 桁の数字を抽出したい。
私が試したら
\d{5}
これは"12345"
orに対して機能しますが、望ましくない文字列"a12345a"
にも一致します。"12345"
"123456"
私は試すことができます
\d{5}\D
ただし、文字列"12345a"
は「a12345a」で一致します。番号だけを取得する方法はありますか?
文字で囲まれている場合でも、正確に 5 桁の数字と一致させるには、正規表現を使用します。
(?<!\d)\d{5}(?!\d)
\d{5}
これは、数字が先行 ( (?<!\d)
) も後続 ( ) もない5 桁 ( ) に一致(?!\d)
します。
単語境界 ( ) は、 では一致\b
できないため、ここでは機能しません。12345
a12345a
regex101.comでデモをご覧ください。
(\d{5})[^a-zA-Z]
が正しい方法です。
(\d{5})
キャプチャは5つの数字であり[^a-zA-Z]
、次の文字は文字にすることはできません.
編集:
わかりやすくするために:\b(\d{5})\b
境界で囲まれた 5 桁の数字が必要な場合に使用されます (' , . "
もちろんスペースのようなトークン)。
/\d{5}[^\d]/
これは、数字以外の文字が続く 5 桁のシーケンスに一致します。