Perlを使用して無効な文字を下線に置き換えるには?

Perlを使用して無効な文字を下線に置き換えるには?

$site変数には「www.mysite.com」などの文字列があります。 MySQLで引用されていない識別子に許可される文字は次のとおりです(詳細情報:https://dev.mysql.com/doc/refman/5.7/en/identifiers.html):

  • ASCII: [0-9,az,AZ$_] (基本ラテン文字、数字 0-9、ドル、下線)
  • 拡張子: U+0080 .. U+FFFF

しかし、私にとっては、この正規表現を実行するだけで十分です: 's/[^0-9a-zA-Z\$]// G '

有効なスキーマオブジェクト名(データベース名など)に下線が含まれるように、$ siteの無効な文字を変更したいと思います。置換にはPerl正規表現を使用する必要があります。この例では、.を_に置き換える必要があります。

大きな打撃を受けた場合:

site="www.mysite.com"
mysql_db_name= ???

私の質問は次のとおりです。

  • 置換のために$ siteをPerl正規表現に入力し、結果を$ mysql_db_name変数に割り当てるにはどうすればよいですか?

ありがとうございます!

ベストアンサー1

そうでなければ持つPerlを使うと、trとても簡単になります。

mysql_db_name="$(echo -n "$site" | tr -C '0-9a-zA-Z_$' '_')"

おすすめ記事