正規表現 "[a-z0-9]\+" はどういう意味ですか? または具体的には、「\」はここで何を意味するのでしょうか? その正規表現に一致するのは、世界にない文字列ですか?
5 に答える
言うのは難しいです。どの RE (BRE? ERE? または PCRE) を使用するかによって異なります。
BREを使用すると、\
は+
特別な意味を持ちます。
ERE/PCREを使用する場合、離れた\
特別な意味を持ち+
ます。
例は明らかです(grepを使用、デフォルトではBREを使用):
kent$ echo "aaaaaa+"|grep -o 'a+'
a+
kent$ echo "aaaaaa+"|grep -o 'a\+'
aaaaaa
kent$ echo "aaaaaa+"|grep -oE 'a\+'
a+
kent$ echo "aaaaaa+"|grep -oE 'a+'
aaaaaa
\
in[a-z0-9]\+
は、文字通りのプラス文字を意味します。スラッシュが+
なければ、 は1 つ以上の quantifier になるため、必要です。
比較:
[a-z0-9]\+
プラスが続くラテン小文字または数字に一致します。y+
[a-z0-9]+
1 つ以上のラテン小文字または数字に一致します。xy4
「+」をリテラル + 記号にします。これは、最初の範囲に一致し、その後に + 記号が続く任意の文字 ( c+
orなど) と一致します5+
。
スラッシュがなければ、+ は「1 回以上の出現」を意味するため、文字列は , のようabc
になりt63
ます。
ここのスラッシュ (「\」) は、+
.
+
正規表現では特別な意味を持ちます。これは、前の項目を 1 回以上繰り返すことを意味します。
[a-z0-9]\+
意味: 1 つの英数字とプラス記号 ("+") に一致[a-z0-9]+
意味: 1 つ以上の英数字に一致
正規表現数量詞の詳細については、こちらを参照してください。
また、この正規表現の基本構文リファレンスも参照してください。
バックスラッシュ ( \
) は特殊文字をエスケープして、その特別な意味を抑制します。したがって、ここでは の特別な意味+
は取り除かれています。単なるシンボルと見なされます。の通常の意味は+
、前のブロックを 1 回以上繰り返すことです。
したがって、この場合[a-z0-9]\+
、1 つの小文字または 10 進数の後に + が続くことを意味します。a+
、b+
、などはすべて0+
、1+
この正規表現の有効な表現です。