![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。
両方とも構文エラーが起きないのでその時点で?ですが
.は\.としないと正規表現ではドット文字を認識しないのはわかりますが、正規表現の@はどうすればよいのでしょうか?
Perl自体@も配列なので\@つけた方が・・・
よろしくお願いいたします。
$x = "test@example.com";
if ( $x =~ /[^a-zA-Z0-9\.\-\_@]/)
if ( $x =~ /[^a-zA-Z0-9\.\-\_\@]/)
No.1ベストアンサー
- 回答日時:
> $x = "test@example.com";
>if ( $x =~ /[^a-zA-Z0-9\.\-\_@]/)
>if ( $x =~ /[^a-zA-Z0-9\.\-\_\@]/)
文字列中の @ をエスケープを忘れてはいけません。
これは正規表現のマッチとは関係ありません。
この例でもuse strict すれば警告が出るはずです。
use strict;
use warnings;
#my $x = "foo@example.com";
my $x = "foo\@example.com";
#my @z = qw(f o o);
print "match\n" if $x =~ /[@z]/;
実行時のエラーメッセージ:
Possible unintended interpolation of @z in string at interpol.pl line 8.
Global symbol "@z" requires explicit package name at interpol.pl line 8.
Execution of interpol.pl aborted due to compilation errors.
上のスクリプトの my @z の行を生かすと
マッチに成功するようになります ;-)
@のエスケープは正規表現パターン中でも
必要ですが、ブラケットの中にある
'.' や '_' のエスケープは不要です。
'-' は扱いが微妙なんですが、この例では必要ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaの正規表現で、マッチした一...
-
正規表現でAND検索はできる...
-
C言語のコメントを「正規表現」...
-
正規表現 秀丸エディタ 行頭か...
-
正規表現で特定文字列の全角カ...
-
MFCで正規表現
-
VB.NET で正規表現を使用した検...
-
時間の正規表現
-
PS4コントローラーをPCでゲーム...
-
PC電源は、出力DC12VとDC5Ⅴで...
-
4Kの外部モニターに出力すると...
-
EBCDIC⇒SJIS変換の方法
-
EXCELで=より左の文字を一括で...
-
エクセルでアルファベットか数...
-
1文字って1バイトだったっけ?
-
【Excel VBA】複数ある特定の文...
-
エクセルで文字列をtxtファイル...
-
「彡」って文字はなんという文...
-
MMDでavi出力が出来ない
-
セル内の文字列が日本語か英語...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現 秀丸エディタ 行頭か...
-
正規表現でAND検索はできる...
-
vbaの正規表現で、マッチした一...
-
正規表現でシングルクォーテー...
-
文章中全ての半角カッコ ( の...
-
[VBS] テキストファイルから任...
-
メールアドレスの正規表現について
-
C言語のコメントを「正規表現」...
-
正規表現です。括弧内にある複...
-
grepの正規表現での最短マッチ...
-
さくらエディタでGrep検索する...
-
C言語にパターンマッチってない...
-
Mで始まりuで終わる文字列
-
MFCで正規表現
-
第二水準漢字が含まれるか?
-
grep の検索条件
-
正規表現で文字クラスの引き算
-
正規表現で、青空文庫形式の入...
-
bb を含まない正規表現
-
強制的にバックトラックさせる...
おすすめ情報