任何人都可以解释为什么[。^;]和[;]的结果在正则表达式中相同

时间:2014-09-10 07:09:17

标签: regex

我是正则表达式的新手。在探索它时,我发现正则表达式[。^;]和[;]的结果是相同的,我试图找出解释。 字符串是Hello; World 据我所知,^是为了否定所以不应该跳过它的下一个字符';'在这种情况下?

3 个答案:

答案 0 :(得分:2)

[.^;]没有按照您的预期执行,因为^被视为文字^而不是否定。

否定它在字符类中的第一个位置使用^

[^.;]
  • [.^;]成为与文字.^;
  • 匹配的字符类
  • [^.;]成为一个否定字符类,匹配除了文字之外的任何内容.;
  • [;]也是一个与文字;匹配的字符类

答案 1 :(得分:1)

如果字符组是组中的第一个字符,则

^仅对字符组进行否定。

[.^;]将匹配组中三个字符的任何(文字句号,插入符号或分号)。另一方面,[^.;]将匹配组中的任何(任何字母,任何数字,除文字句点或分号之外的任何其他内容)。

答案 2 :(得分:0)

它们不一样。

克拉^仅表示在字符类中第一个字符时的否定。

此正则表达式[.^;]表示"字面点或克拉或分号"

此正则表达式[;]表示"分号"。