Scala:正则表达式

50 阅读1分钟

导入

组成

无论多么复杂的正则表达式,都是由如下4个部分组成:

  1. 字符类:包括单个字符和字符范围。例如:

    • "a"匹配字符"a"
    • "[abc]"匹配"a"、"b"或者"c"中的任意一个字符
    • "[a-z]"匹配从"a"到"z"的任意一个小写字母
  2. 量词:用于指定前面的字符或字符组出现的次数。例如:

    • "*"表示前面的字符可以出现0次或多次
    • "+"表示前面的字符至少出现1次
    • "?"表示前面的字符最多出现1次
  3. 锚点:用于指定匹配的位置。例如:

    • "^"表示匹配行首
    • "$"表示匹配行尾
    • "^abc"表示匹配以"abc"开头的行
    • "abc$"表示匹配以"abc"结尾的行
  4. 分组:使用括号"()"来分组。例如:

    • "(ab)+"表示"ab"这个组合至少出现1次
    • 分组还可以用于提取匹配的子字符串等操作

规则

能匹配单个字符的规则

方括号[]定义字符类,匹配其一
排除字符类^[]开头加^,匹配其余字符

能匹配很多规则的字符

.匹配除换行外单个字符
\d等价[0-9],匹配数字
\D等价[^0-9],匹配非数字
\w等价[a-zA-Z0-9_],匹配相关字符
\W等价[^a-zA-Z0-9_],匹配其他
\s匹配空白字符
\S匹配非空白字符

量词

*匹配前面0次或多次
+匹配前面至少1次
?匹配前面最多1次
{n}匹配前面恰好n次
{n,}匹配前面至少n次
{n,m}匹配前面n到m次

特殊规则

锚点 - ^匹配行首
锚点 - $匹配行尾
分组匹配()用()创建,可提取子串

更多内容请看下章🥰