正则表达式常用元字符全解


发布日期 : 2022-08-06 18:44:56 UTC

访问量: 10 次浏览

正则表达式元字符是由一些特殊字符组成的,用来描述文本规则的模式。
在各种编程语言中都有正则表达式的支持,例如JavaScript、Python、Java等。
这些元字符可以匹配文本中的特定字符、字符集合、重复次数等,让文本的匹配变得更加灵活。

简单字符和元字符

首先,我们需要了解正则表达式中的简单字符和元字符。
简单字符指的是表示特定字符的字符,比如字母和数字等;而元字符指的是具有特殊含义的字符,比如^、$和.等。

字符匹配

字符匹配是正则表达式最基本的功能之一,它可以保证文本中的某个特定字符或字符集合被匹配。
以下是一些常用的字符匹配元字符:

  • . : 匹配除了换行符之外的任何字符。例如,用 /./ 可以匹配任意字符。
  • : 匹配括号内的任意一个字符。例如,用 /[abc]/ 可以匹配a、b或c。
  • [^ ] : 匹配除了括号内指定字符以外的任意字符。例如,用 /[^abc]/ 可以匹配除了a、b和c以外的任何字符。
  • \d : 匹配任意数字,相当于 [0-9] 。例如,用 /\d/ 可以匹配1、2、3等数字字符。
  • \D : 匹配任意非数字字符,相当于 [^0-9] 。例如,用 /\D/ 可以匹配字符a、b、c等非数字字符。

以下是一些字符匹配的示例:

// 匹配所有6个字母的单词
/\b\w{6}\b/

// 匹配5个数字字符
/\d{5}/

// 匹配任意数字字符
/\d/

// 匹配除数字外的任意字符
/\D/

边界匹配

边界匹配可以确保文本中的某个特定字符串总是在行的开头或结尾。
在正则表达式中,有两个元字符可以实现这一功能:^和$。

  • ^ : 匹配行的开头。例如,用 /^javascript/ 可以匹配以javascript开头的行。
  • $ : 匹配行的结尾。例如,用 /html$/ 可以匹配以html结尾的行。

以下是一些边界匹配的示例:

// 匹配以hello开头的行
/^hello/

// 匹配以world结尾的行
/world/

// 匹配以foo开头且以bar结尾的行
/^foo.*bar/

重复匹配

有时候需要匹配的内容不是单个字符,而是一段重复的字符序列。
在正则表达式中,有些元字符可以用于重复匹配,它们可以限制字符串序列的重复次数,以下是一些常用的重复匹配元字符:

    • : 匹配前面的表达式0次或多次。例如,用 /a*/ 可以匹配空字符串、a、aa、aaa等字符序列。
    • : 匹配前面的表达式1次或多次。例如,用 /a+/ 可以匹配a、aa、aaa等字符序列。
  • ? : 匹配前面的表达式0次或1次。例如,用 /a?/ 可以匹配空字符串或a字符。
  • {n} : 匹配前面的表达式恰好n次。例如,用 /a{3}/ 可以匹配aaa字符。
  • {n,} : 匹配前面的表达式n次或以上次数。例如,用 /a{2,}/ 可以匹配aa、aaa、aaaa等字符序列。
  • {n,m} : 匹配前面的表达式n到m次。例如,用 /a{2,4}/ 可以匹配aa、aaa、aaaa等字符序列。

以下是一些重复匹配的示例:

// 匹配重复出现的数字
/\d+/

// 匹配重复出现的单词
/\b\w+\b/

// 匹配标题格式
/^#+\s+.+$/

分组匹配

分组匹配可以将一系列字符看做一个整体来进行匹配,并对其进行后续操作,如限定重复次数或捕获匹配结果等。
在正则表达式中,用圆括号()来进行分组匹配。以下是一些分组匹配的示例:

// 匹配重复出现的abc
/(abc)+/

// 匹配重复出现的字符
/(\w)\1+/

// 捕获匹配结果
/(\d{3})-(\d{4})/

// 非捕获匹配结果
/(?:\d{3})-(\d{4})/

其他元字符

除了以上介绍的元字符,还有一些其他的元字符可以用来进行特殊的匹配操作,以下是一些常用的其他元字符:

  • | : 匹配左右两边任意一个表达式。例如,用 /a|b/ 可以匹配a或b。
  • \b : 匹配单词边界,即单词与非单词字符之间的位置。例如,用 /\bcat\b/ 可以匹配单词cat,但不匹配acat或catn。
  • \w : 匹配字母、数字和下划线字符,相当于 [a-zA-Z0-9_] 。例如,用 /\w+/ 可以匹配单词和变量名等。
  • \W : 匹配非字母、数字和下划线字符,相当于 [^a-zA-Z0-9_] 。例如,用 /\W+/ 可以匹配标点符号和空格等。
  • \s : 匹配任意空白字符,包括空格、制表符、换行符等。例如,用 /\s+/ 可以匹配空格和换行等。
  • \S : 匹配任意非空白字符,包括字母、数字、标点符号等。例如,用 /\S+/ 可以匹配单词和标点符号等。

以下是一些其他元字符的示例:

// 匹配所有以http或https开头的URL地址
/(http|https):\/\/\S+/

// 匹配所有空白字符和数字字符
/[\s\d]/

结论

正则表达式中的元字符让文本匹配变得更加灵活,可以根据不同的需求选择不同的元字符。
在进行正则表达式匹配时,需要考虑匹配规则和性能,选择最优的方式来实现。