これは私が持っている表現です:^[a-z][a-z0-9_]+[a-z0-9]$
今のところ、何も一致しません。ems_agencies
一致させるにはどうすればよいems_agencies_
ですか?
これは私が持っている表現です:^[a-z][a-z0-9_]+[a-z0-9]$
今のところ、何も一致しません。ems_agencies
一致させるにはどうすればよいems_agencies_
ですか?
「何にも一致しない」場合は、正規表現の間違った方言を使用している可能性があります。は+
ERE の要素であり、BRE では機能しません。たとえば、これをgrep
コマンドで使用している場合は、それを実行するegrep
か、オプションを使用する必要があり-E
ます。
$ printf 'ems_agencies\nems_agencies_\n' | egrep '^[a-z][a-z0-9_]+[a-z0-9]$'
ems_agencies
$ printf 'ems_agencies\nems_agencies_\n' | grep '^[a-z][a-z0-9_]+[a-z0-9]$'
$
この正規表現を使用している環境を教えていただければ、答えを絞り込むのに役立つかもしれません。
場合によっては、EREをBREに変換することが可能です。たとえば、を書く代わりに、を書く[a-z0-9]+
ことができます[a-z0-9][a-z0-9]*
。これは、読みやすさを犠牲にして、すべての正規表現の実装で普遍的に機能します。
printf "ems_agencies\nems_agencies_\n" | grep '^[a-z][a-z0-9_][a-z0-9_]*[a-z0-9]$'
ems_agencies
あなたの表現はうまくいきます。ここを参照してください:http://regex101.com/r/gM1zM2
今後の参考のために:[0-9]
は と同じで\d
、[a-z0-9_]
と等しい\w
。大文字と小文字\w
が区別されないことに注意してください