我看到一本书的描述。
书中说/^Apple/
将匹配字符串的开头有一个苹果。因此它将与Apple Apple1 AppleApple AppleABC
匹配......
书中还说,/Apple$/
将匹配字符串末尾有苹果的字符串。所以它会像这样匹配ABCApple 12345Apple
……
但书中说,/^Apple$/
将只与Apple
匹敌。但是我很困惑,我认为/^Apple$/
应该匹配字符串"Apple“开头和字符串结尾"Apple”的字符串,所以像AppleabcApple
这样的字符串应该匹配,所以我很困惑。
发布于 2013-06-13 04:14:44
^
表示字符串(或行,取决于您的正则表达式引擎)的开始。$
表示字符串的结尾。它们就像任何字母或数字一样匹配,但匹配的是“开始”和“结束”而不是特定的字符。
因此,^Apple
的意思是“紧跟在字符串的开头,必须有一个苹果”。Apple$
的意思是“紧跟在Apple
之后必须是字符串的结尾”。因此,^Apple$
的意思是“字符串的开头是苹果,字符串的结尾是苹果”--因此,^Apple$
只能匹配完全包含Apple
而不包含其他内容的字符串。
如果想要匹配以Apple
开头和结尾的字符串,可以这样写
/^Apple.*Apple$/
(如果你想匹配一个可以自身重叠的字符串,事情会变得更复杂,比如eraser
(例如匹配eraseraser
) --如果你的正则表达式引擎允许,你可以尝试混合的前视/后视:^(?=eraser).*(?<=eraser)$
)
发布于 2013-06-13 04:14:26
不要将^
和$
分别视为字符串开头或结尾的匹配单词,而应将^
和$
视为字符串开头和结尾的不可见字符,您可以在正则表达式中匹配它们。
搜索字符意味着您要查找字符串apple
,后面紧跟字符串结尾的“apple$
”。^
也有类似的概念。
因此,要匹配苹果,字符串的开头必须紧跟在‘^apple$
’之前,结尾必须紧跟在'apple‘之后。
发布于 2013-06-13 04:13:10
如果您确实希望匹配以Apple开头或以Apple结尾的字符串,则使用以下正则表达式:
/^Apple|Apple$/
https://stackoverflow.com/questions/17079058
复制