2

本の説明を見た...

この本は/^Apple/、文字列の先頭に Apple がある文字列に一致すると言っています。それで合っちゃうんですApple Apple1 AppleApple AppleABCけど……

また、この本/Apple$/は、文字列の末尾に Apple がある文字列に一致すると述べています。ABCApple 12345Appleそんなこんなでマッチするなんて……。

しかし、本は言う/^Apple$/だけで一致しAppleます。しかし、私は混乱し/^Apple$/ています.文字列「Apple」の始まりと文字列「Apple」の終わりを持つ文字列と一致する必要があると思いAppleabcAppleます.

4

5 に答える 5

11

^文字列 (または正規表現エンジンによっては行) の開始を意味します。$文字列の終わりを意味します。これらは文字や数字と同じように一致しますが、特定の文字ではなく「始まり」と「終わり」に一致します。

つまり、^Apple「文字列の先頭の直後に、Apple がなければならない」という意味です。Apple$「直後Appleは文字列の終わりでなければならない」を意味します。したがって、^Apple$「文字列の先頭の後に Apple があり、その後が文字列の末尾である」という意味になります。したがって、^Apple$正確に含む文字列のみに一致し、他にはApple何も一致しません。

で始まりで終わる文字列に一致させたい場合は、次のAppleように書くことができます

/^Apple.*Apple$/

eraser(たとえば、 matchingのように、それ自体が重複する可能性のある文字列に一致させたい場合、事態はさらに複雑になりeraseraserます。正規表現エンジンで許可されている場合は、混合先読み/後読みを試すことができます: ^(?=eraser).*(?<=eraser)$)

于 2013-06-13T04:14:44.427 に答える
7

andをそれぞれ文字列の先頭または末尾に一致する単語と考える代わりに、^andを文字列の先頭と末尾にある非表示の文字と考えてください。これらは正規表現で一致させることができます。$^$

検索とは、文字列の直後に文字列の終わりの「文字」が続くapple$文字列を探していることを意味します。appleと同様の概念です^

したがって、一致^apple$するには、文字列の開始が「apple」の直前、終了が「apple」の直後ある必要があります。

于 2013-06-13T04:14:26.193 に答える
5

Apple で始まる文字列または Apple で終わる文字列と一致させたい場合は、次の正規表現を使用します。

/^Apple|Apple$/
于 2013-06-13T04:13:09.897 に答える
3

これらの正規表現について与えられた説明は、少し誤解を招くものです。

/^Apple/ "Apple" で始まるすべての文字列^一致しますが、これは、パターンが文字列の先頭 ( ) の直後にA大文字が続き、直後に小文字が続くpなどの理由によるものです。

同様に、/Apple$/ "Apple" で終わる任意の文字列に一致しますが、これはパターンが "Apple" のリテラル文字列の直後に文字列の末尾が続くためです。

これが意味すること/^Apple$/は、文字列の先頭であり、その直後にリテラル文字列 "Apple" が続き、その直後に文字列の終わりが続くということです。

このため、パターンには他のものに一致する余地がありません。次のようなワイルドカード文字があった場合:

/^App.*le$/

"App" で始まり "le" で終わる任意の文字列と、その間にあるさまざまな文字に一致させることができます (すべて.に一致するわけではありませんが、多くの文字に一致します)。

于 2013-06-13T04:16:58.167 に答える
2

2 つのアンカー (begin と end) があるため、「文字列は正確に ... でなければならない」(あなたの場合は Apple) ことを意味します。先頭の文字列を一致させるには、Perrenoud の式を使用するか、単に/^Apple

于 2013-06-13T04:09:50.777 に答える