我一直认为在正则表达式中,^和#之类的'动词'必须跟在某些东西之后,例如^a,行以a开头,或#a,行以a结尾,但是^#对我来说,就像#不是' verb' 在这种情况下,就像 a 是动词 '^' 的宾语
有没有人可以给我一个更好的解释?
我一直认为在正则表达式中,^和#之类的'动词'必须跟在某些东西之后,例如^a,行以a开头,或#a,行以a结尾,但是^#对我来说,就像#不是' verb' 在这种情况下,就像 a 是动词 '^' 的宾语
有没有人可以给我一个更好的解释?
我在这里很紧张,我猜您实际上想问为什么^$
与空行匹配。
理解这一点的关键是,并非正则表达式匹配的所有内容实际上都必须是一个字符(或多个字符),它也可以是字符串中的一个位置。匹配位置的正则表达式标记称为“锚”或“断言”。他们实际上并不使用任何文本,他们只是确保正则表达式引擎当前位于字符串中的某个位置。
因此,例如,^
如果正则表达式引擎当前位于字符串的开头,则匹配。在某些情况下,根据当前设置,它也可能匹配当前行的开头。无论如何,它在第一个字符之前匹配。
同样,$
匹配字符串(或行)的末尾;更准确地说,它在终止换行之前匹配,如果有的话。
因此,^$
仅当字符串/行的开头和字符串/行的结尾之间没有字符时才匹配。
我正在假设您对此感到#
困惑$
^
并$
匹配一行的文字开头和文字结尾。不是最后一个字符或第一个字符。它不需要最后一个字符或第一个字符即可工作。
你为什么要这个?好吧,假设您有几行很长的行,并且您想在每行的末尾添加文本。您可以执行替换搜索$
并将其替换为“Bork Bork Bork”(例如,如果您正在制作 encheferizer)。或者您可以通过使用找到逗号分隔列表的最后一个成员[^,]+$
您也可以使用^$
您提到的搜索表达式来匹配空行,或者您可以通过搜索或其他方式确保行上没有任何非法字符^[\w\d]*$
。