3

正規表現 "[a-z0-9]\+" はどういう意味ですか? または具体的には、「\」はここで何を意味するのでしょうか? その正規表現に一致するのは、世界にない文字列ですか?

4

5 に答える 5

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
于 2013-07-06T15:36:05.027 に答える
2

\in[a-z0-9]\+は、文字通りのプラス文字を意味します。スラッシュが+なければ、 は1 つ以上の quantifier になるため、必要です。

比較:

  • [a-z0-9]\+プラスが続くラテン小文字または数字に一致します。y+
  • [a-z0-9]+1 つ以上のラテン小文字または数字に一致します。xy4
于 2013-07-06T15:33:45.237 に答える
0

「+」をリテラル + 記号にします。これは、最初の範囲に一致し、その後に + 記号が続く任意の文字 ( c+orなど) と一致します5+

スラッシュがなければ、+ は「1 回以上の出現」を意味するため、文字列は , のようabcになりt63ます。

于 2013-07-06T15:32:50.040 に答える
0

ここのスラッシュ (「\」) は、+. +正規表現では特別な意味を持ちます。これは、前の項目を 1 回以上繰り返すことを意味します。

  • [a-z0-9]\+意味: 1 つの英数字とプラス記号 ("+") に一致
  • [a-z0-9]+意味: 1 つ以上の英数字に一致

正規表現数量詞の詳細については、こちらを参照してください。
また、この正規表現の基本構文リファレンスも参照してください。

于 2013-07-06T15:33:41.367 に答える
0

バックスラッシュ ( \) は特殊文字をエスケープして、その特別な意味を抑制します。したがって、ここでは の特別な意味+は取り除かれています。単なるシンボルと見なされます。の通常の意味は+、前のブロックを 1 回以上繰り返すことです。

したがって、この場合[a-z0-9]\+、1 つの小文字または 10 進数の後に + が続くことを意味します。a+b+、などはすべて0+1+この正規表現の有効な表現です。

于 2013-07-06T15:34:25.747 に答える