正则表达式克拉位置差异

时间:2014-11-14 20:16:27

标签: regex

" ^ [a-z] + $"之间有什么区别? vs" [^ a-z] + $"?

" ^ [A-Z] + $" =这是任何以字母

开头的东西

" [^ A-Z] + $" =这个不是字母

任何人都可以确认吗?如果我错了,有人可以给我一个正则表达式,以及#34;以字母开头的任何东西。和"除了字母之外的任何东西"

修改

如果我看到字母和数字的组合,那么正则表达式怎么样呢?

[^ a-z0-9] + $

或是

它[^ a-z] + [^ 0-9] + $

由于

2 个答案:

答案 0 :(得分:1)

正则表达式中的方括号指定字符类 - 它匹配括号中的所有字符。

在字符类之外,^匹配字符串的开头或行的开头(取决于是否使用m修饰符)。所以正则表达式^[a-z]+$匹配一个完全是字母的行。如果删除$(与字符串/行的末尾匹配),您将获得与以字母开头的任何内容匹配的正则表达式;在这种情况下,您也不需要+量词(以1个或多个字母开头的任何内容也以1个字母开头)。

在字符类的开头,^反转该类。它不匹配括号中的所有字符,而是匹配括号中的所有字符。所以[^a-z]+$匹配任何以非字母结尾的内容,因为$匹配字符串/行的结尾。如上所述,您不需要+,因为以1个或多个非字母结尾的任何内容也以1个非字母结尾。当所有是非字母时匹配的正则表达式将是:

^[^a-z]+$

当行中有任何非字母时匹配的正则表达式为:

[^a-z]

即。没有^$锚。

答案 1 :(得分:1)

" ^ [A-ZA-Z] + $" =这是任何以字母

开头的东西

" [^ A-ZA-Z] + $" =这个不是字母

如果你想包括低位和高位字母

可视化正则表达式的工具: Visualizing regular expressions