正则表达式 - 元字符


正则表达式(Regular Expression)是一种描述字符串规则的表达式语言。在正则表达式中,元字符是用来表示特定的字符或字符集合的符号,是正则表达式中最基本的元素。

  1. 字符匹配:

(1). (小数点):表示任意一个字符。例如“a.b”可以匹配“acb”、“aab”、“a#b”等字符串。

(2)[ … ] :表示匹配括号内的任意一个字符。可以使用字符范围表示某一范围内的所有字符,例如[a-z]表示所有的小写字母,[A-Z]表示所有的大写字母,[0-9]表示所有的数字等。

(3)^ :表示以什么开头,例如“^a”表示以a开头的字符串。

(4)$ :表示以什么结尾,例如“b$”表示以b结尾的字符串。

  1. 数量匹配:

(1)* :表示匹配前面的一个字符出现0次或多次,例如“a*”表示匹配0个或多个a字符。

(2)+ :表示匹配前面的一个字符出现1次或多次,例如“a+”表示匹配1个或多个a字符。

(3)? :表示匹配前面的一个字符出现0次或1次,例如“a?”表示匹配0个或1个a字符。

(4){n} :表示匹配前面的一个字符出现n次,例如“a{3}”表示匹配3个a字符。

(5){n,} :表示匹配前面的一个字符至少出现n次,例如“a{3,}”表示匹配3个或更多个a字符。

(6){n,m} :表示匹配前面的一个字符出现n~m次,例如“a{3,5}”表示匹配3个~5个a字符。

  1. 贪婪与非贪婪匹配:

(1)贪婪匹配:表示尽可能多的匹配字符,例如“a.*b”可以匹配“ab”、“a123b”、“a1b2c3b”等字符串。

(2)非贪婪匹配:表示尽可能少的匹配字符,例如“a.*?b”可以匹配“ab”和“a1b2c3b”的“ab”,而“a.*b”匹配整个字符串“a1b2c3b”。

  1. 常用元字符:

(1)\s:表示空格或其他空白字符(制表符、换行符等)。

(2)\S:表示非空格或非空白字符。

(3)\d:表示任意数字字符。

(4)\D:表示非数字字符。

(5)\w:表示任意字母、数字或下划线字符。

(6)\W:表示非字母、数字或下划线字符。

  1. 特殊元字符:

(1)|:表示或关系,例如“a|b|c”可以匹配“a”、“b”、“c”。

(2)( … ):表示分组,以便在后面进行引用,例如“(ab)+”表示至少一次重复的“ab”。

(3)\:表示转义字符,例如使用“.”表示匹配“.”字符。

(4)\b:表示一个单词的边界,例如“\ba”可以匹配“a”、“apple”、“allow”等单词中的“a”,但不能匹配“banana”等中间有“a”的单词。

以上是正则表达式中常见的元字符,它们可以组合在一起实现更加复杂的匹配。

总之,正则表达式虽然学习曲线陡峭,但是在处理字符串时非常方便。熟练掌握正则表达式中各种元字符的含义及用法,可以提高编程效率,解决很多字符串处理问题。