正则表达式语法大全,正则表达式语法
正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找和替换符合特定模式的字符串。以下是正则表达式的基本语法和常用操作符:
元字符(Metacharacters)
元字符 | 含义 | 示例 |
---|
. | 匹配除换行符之外的任何字符 | a.b 可以匹配 aab 、acb 等 |
^ | 匹配字符串的开始位置 | ^abc 匹配以 abc 开头的字符串 |
$ | 匹配字符串的结束位置 | abc$ 匹配以 abc 结尾的字符串 |
* | 匹配前面元素的0次或多次重复 | ab* 可以匹配 a 、ab 、abbb 等 |
+ | 匹配前面元素的1次或多次重复 | ab+ 可以匹配 ab 、abbb 等,但不能匹配 a |
? | 匹配前面元素的0次或1次重复 | ab? 可以匹配 a 或 ab |
{} | 匹配前面元素的指定次数 | a{3} 匹配 aaa ,a{2,4} 匹配 aa 、aaa 、aaaa |
[] | 匹配括号内的任何单个字符 | [abc] 匹配 a 、b 或 c |
() | 括号用于将正则表达式的部分进行分组 | (ab)+ 匹配 ab 、abab 等 |
\ | 转义特殊字符 | \. 匹配点号本身 |
预定义的字符类(Character Classes)
字符类 | 含义 | 示例 |
---|
\d | 匹配任何数字,等价于 `` | \d{3} 匹配三个数字 |
\D | 匹配任何非数字字符,等价于 [^0-9] | \D+ 匹配一个或多个非数字字符 |
\w | 匹配任何字母、数字或下划线,等价于 [A-Za-z0-9_] | \w{5} 匹配五个字母、数字或下划线 |
\W | 匹配任何非字母、数字或下划线字符 | \W+ 匹配一个或多个非字母、数字或下划线字符 |
\s | 匹配任何空白字符(空格、制表符、换行符等) | \s+ 匹配一个或多个空白字符 |
\S | 匹配任何非空白字符 | \S+ 匹配一个或多个非空白字符 |
定位符(Anchors)
定位符 | 含义 | 示例 |
---|
\b | 匹配一个单词边界,即字与空格间的位置 | \bcat\b 匹配单独的单词 cat |
\B | 非单词边界匹配 | \Bcat\B 匹配 scatter 中的 cat |
选择与分组
操作符 | 含义 | 示例 |
---|
| | 选择操作符,匹配两个或多个表达式中的一个 | `cat |
(?:) | 非捕获分组,用于分组但不捕获匹配的内容 | (?:abc)+ 匹配一个或多个 abc |
(?=) | 正向肯定预查,匹配后面满足条件的字符串 | a(?=b) 匹配后面跟着 b 的 a |
(?!) | 正向否定预查,匹配后面不满足条件的字符串 | a(?!b) 匹配后面不跟着 b 的 a |
修饰符(Flags)
修饰符 | 含义 | 示例 |
---|
i | 不区分大小写 | /abc/i 匹配 ABC 、Abc 等 |
g | 全局匹配 | /abc/g 匹配所有的 abc |
m | 多行匹配 | /^abc/m 匹配每行开头的 abc |
s | 特殊字符圆点 . 中包含换行符 \n | /a.b/s 匹配 a\nc |
常用正则表达式示例
用途 | 正则表达式 | 说明 |
---|
匹配电子邮件地址 | ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ | 验证电子邮件格式 |
匹配电话号码 | ^\+?{1,3}?[-.●]?{1,4}[-.●]?{1,4}[-.●]?{1,9}$ | 验证电话号码格式 |
匹配日期格式(YYYY-MM-DD) | `^\d{4}-(0 | 1)-(0 |
匹配IP地址 | ^(?:{1,3}\.){3}{1,3}$ | 验证IP地址格式 |
匹配中文字符 | [\u4e00-\u9fa5] | 匹配中文字符 |
匹配双字节字符(包括汉字在内) | [^\x00-\xff] | 匹配双字节字符 |
匹配空行 | `\n[\s | ]*\r` |
匹配HTML标记 | <tiangong type="reference" index="4-14"> `<(.)>.</\1></tiangong> | <tiangong type="reference" index="4-14"><(.*) />` </tiangong> |
匹配首尾空格 | `(^\s*) | (\s*$)` |
匹配非负整数 | ^\d+$ | 匹配非负整数 |
匹配正整数 | ^**$ | 匹配正整数 |
匹配非正整数 | `^((-\d+) | (0+))$` |
匹配负整数 | ^-**$ | 匹配负整数 |
匹配整数 | ^-?\d+$ | 匹配整数 |
匹配非负浮点数 | ^\d+(\.\d+)?$ | 匹配非负浮点数 |
匹配正浮点数 | `^((0-9)+.**) | (**.+) |
匹配非正浮点数 | `^((-\d+.\d+)?) | (0+(.0+)?))$` |
匹配负浮点数 | ^(-((正浮点数正则式)))$ | 匹配负浮点数 |
匹配英文字符串 | ^[A-Za-z]+$ | 匹配英文字符串 |
匹配英文大写串 | ^[A-Z]+$ | 匹配英文大写串 |
匹配英文小写串 | ^[a-z]+$ | 匹配英文小写串 |
匹配英文字符数字串 | ^[A-Za-z0-9]+$ | 匹配英文字符数字串 |
匹配英数字加下划线串 | ^\w+$ | 匹配英数字加下划线串 |
匹配邮政编码 | ^\d{5}$ | 匹配邮政编码 |
匹配中文 | ^[\u0391-\uFFE5]+$ | 匹配中文 |
匹配电话号码 | `^((\d2,3) | (\d{3}-))?(0\d2,3 |
以上是正则表达式的基本语法和一些常用示例,通过这些基本元素的组合,可以构建出非常复杂的匹配模式,以满足各种文本处理需求。在实际应用中,还可以根据具体情况使用编程语言提供的正则表达式函数或方法来实现相应的功能。