这个正则表达式意味着什么?

use*_*847 12 java regex

在最近的一次采访中,我被要求破译这个正则表达式

^\^[^^]
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.

  • @Matt,我认为这是一个安全的假设,因为如果意味着字面反斜杠,那么正则表达式永远不会匹配任何字符串. (3认同)
  • @Matt:我认为是因为java标签. (2认同)