次のようなパターンがあるとします。
@[a-z]+\s[\d]
次のようなものがあると便利ですか?
(@[a-z]+\s[\d])
どんな状況でも?それらの間に違いはありますか?どうして?
は()
、データのキャプチャに使用されます。"My name is John"
キャプチャせずに一致させようとすると、次のようになります。
/My name is [A-Z][a-z]+/
その場合、結果は単純に次の文字列になります。
("My name is John")
結果とは別に名前を取得したい場合は、次の()
ように使用できます。
/My name is ([A-Z][a-z]+)/
これにより、一致全体が返され (常に一致全体が最初の結果項目として返されるのが規則です)、キャプチャされた名前も次のように返されます。
("My name is John", "John")
姓名を取得したい場合は、次の"My name is John Doe"
ようにします。
/My name is ([A-Z][a-z]+) ([A-Z][a-z]+)/
結果:
("My name is John Doe", "John", "Doe")
ですから、あなたの質問に答えるために、実際には 2 つの表現に違いはありません。1 つ目は文字列に一致するだけですが、2 つ目は文字列に一致してキャプチャします (この場合、基本的に 2 つの同一の結果が得られます)。
通常、二重引用符で囲みます...