在最近的一次采访中,我被要求破译这个正则表达式
^\^[^^]
Run Code Online (Sandbox Code Playgroud)
你能帮帮我吗?另外请提供一些链接,我可以在那里学习正则表达式的访谈.
cod*_*ict 30
它匹配字符串的开头与^后跟任何字符比其他 ^.
所以它会匹配:
^foo
^b
Run Code Online (Sandbox Code Playgroud)
但不是
foo
^^b
Run Code Online (Sandbox Code Playgroud)
说明:
Caret(^)是一个正则表达式元字符,有两个不同的含义:
在角色类之外(在你的正则表达式中第一次使用)它作为起始锚点.
内部字符类,它就像否定器 是否用作第一字符类(在你的正则表达式使用3)的性质.
在正则表达式之前\逃脱它(使它非特殊).^你的正则表达式中的第二次使用是转义的,它匹配^字符串中的文字.
在字符类中^,字面上的字符不是字符类的第一个字符.因此,你的正则表达式中的第四个用法是文字^.
还有一些例子可以说清楚:
^a :匹配以字符串开头的字符串 a^ab :匹配以后a跟 开头的字符串b[a] :匹配一个有一个字符串 a[^a] :匹配没有的字符串 a^a[^a] :匹配以a开头的字符串,a后跟除以外的任何字符a.