2

これは私が持っている表現です:^[a-z][a-z0-9_]+[a-z0-9]$

今のところ、何も一致しません。ems_agencies一致させるにはどうすればよいems_agencies_ですか?

4

3 に答える 3

3

「何にも一致しない」場合は、正規表現の間違った方言を使用している可能性があります。は+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]$'
$ 

この正規表現を使用している環境を教えていただければ、答えを絞り込むのに役立つかもしれません。

于 2012-09-13T11:18:54.643 に答える
0

場合によっては、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
于 2012-09-15T23:09:18.880 に答える
-1

あなたの表現はうまくいきます。ここを参照してください:http://regex101.com/r/gM1zM2

今後の参考のために:[0-9]は と同じで\d[a-z0-9_]と等しい\w大文字と小文字\wが区別されないことに注意してください

于 2012-09-13T11:10:28.533 に答える