我一直认为在正则表达式中,^和'像'动词'一样必须遵循一些东西, 例如^ a,line以a开头,或#a开头,而line end with a,但是^#对我来说,就像#在这种情况下不是'动词',就像a是动词的对象'^'< / p>
有人能给我一个更好的解释吗?
答案 0 :(得分:1)
我在这里走出困境,我猜你真的想问为什么^$
匹配空行。
理解这一点的关键是,并非正则表达式匹配的所有内容都必须实际上是字符(或字符),它也可以是字符串中的位置 。匹配位置的正则表达式标记称为“锚点”或“断言”。它们实际上并不消耗任何文本,它们只是确保正则表达式引擎currenty位于字符串中的某个位置。
因此,例如,如果正则表达式引擎当前位于字符串的开头,则^
匹配。在某些情况下,根据当前设置,它也可能在当前行的开头匹配。在任何情况下,它都匹配之前第一个字符。
同样,$
匹配字符串(或行)的末尾;更确切地说,它在终止换行符之前匹配,如果有的话。
因此,^$
仅在字符串/行的开头与字符串/行的结尾之间没有字符时才匹配。
答案 1 :(得分:0)
我的工作假设您将#
与$
混为一谈
^
和$
匹配一行的文字开头和字面结尾。不是最后一个角色或第一个角色。并且它不需要最后一个角色或第一个角色。
你为什么要这样?好吧,假设您有几条长行,并且想要在每条行的末尾添加文本。您可以执行替换搜索$
并将其替换为“Bork Bork Bork”(例如,如果您正在制作加密器)。或者,您可以使用[^,]+$
你也可以使用你提到的搜索表达式^$
来匹配一个空行,或者你可以通过搜索^[\w\d]*$
或某事来确保一行上没有任何非法字符