"正则表达式基本语法-OnlyLiu-博客园"
正则表达式是一种强大的文本处理工具,用于在文本中查找、替换或提取符合特定模式的字符串。其核心在于一系列的元字符和运算符,它们组合起来能够描述复杂的匹配规则。以下是正则表达式的基本语法和用法:
1. 元字符:
- `^`:匹配输入字符串的开始位置。
- `$`:匹配输入字符串的结束位置。
- `.`:匹配除换行符外的任何单个字符。
- `*`:匹配前面的子表达式零次或多次。
- `+`:匹配前面的子表达式一次或多次。
- `?`:匹配前面的子表达式零次或一次。
- `{n}`:匹配前面的子表达式恰好n次。
- `{n,}`:匹配前面的子表达式至少n次。
- `{n,m}`:匹配前面的子表达式至少n次但不超过m次。
2. 特殊字符转义:
如果需要匹配元字符本身,需要在其前加上反斜杠 `\` 进行转义,如 `\*` 表示匹配星号 `*` 字符。
3. 量词:
- `*`、`+` 和 `?` 都可以跟在字符或字符类后面,指示它们前面的字符或字符类可以重复的次数。
- 使用大括号 `{}` 指定精确的重复次数,如 `ab{2,4}` 匹配 `abb`、`abbb` 或 `abbbc`,但不匹配 `ab` 或 `abbbd`。
4. 分组与反向引用:
- `( )` 用于创建子表达式,可以捕获匹配的子串,并且可以进行反向引用。例如,`(ab)+` 匹配连续的 `ab` 子串,如 `ababab`。
- `\1` 表示对第一个捕获组的反向引用,`\2` 对第二个捕获组的反向引用,以此类推。
5. 预定义字符类:
- `\d`:匹配任何数字,等同于 `[0-9]`。
- `\D`:匹配任何非数字字符,等同于 `[^0-9]`。
- `\s`:匹配任何空白字符,包括空格、制表符、换页符等,等同于 `[ \f\n\r\t\v\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]`。
- `\S`:匹配任何非空白字符,等同于 `[^ \f\n\r\t\v\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]`。
- `\w`:匹配字母、数字、下划线,等同于 `[a-zA-Z0-9_]`。
- `\W`:匹配非字母、数字、下划线的字符,等同于 `[^a-zA-Z0-9_]`。
6. 非贪婪匹配:
- 在量词后添加 `?` 可以使其变为非贪婪模式,即尽可能少地匹配字符。例如,`a.*?b` 将匹配最短的 `a` 和 `b` 之间的字符串。
7. 选择与或:
- `|` 符号用于表示或的关系,如 `cat|dog` 将匹配 "cat" 或 "dog"。
8. 定位符:
- `\b` 匹配单词边界。
- `\B` 匹配非单词边界。
9. 修饰符(模式修饰符):
- `i`:使匹配对大小写不敏感。
- `g`:全局匹配,查找所有匹配,而不仅仅是第一个。
- `m`:多行模式,使 `^` 和 `$` 分别匹配每一行的开头和结尾,而不仅仅是整个字符串的开始和结束。
这些是正则表达式的基本语法元素,通过组合使用,可以构建出极其复杂的模式来处理各种文本数据。熟练掌握正则表达式对于编程和数据处理任务来说至关重要,特别是在文本分析、数据清洗和验证等领域。