go语言正则表达式

正则表达式语法规则

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")构成的文字序列,可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

下面的表格中列举了构成正则表达式的一些语法规则及其含义。

1) 字符
语法说明表达式示例匹配结果
一般字符匹配自身abcabc
.匹配任意除换行符"\n"外的字符, 在 DOTALL 模式中也能匹配换行符a.cabc
\转义字符,使后一个字符改变原来的意思; 如果字符串中有字符 * 需要匹配,可以使用 * 或者字符集[*]。a.c a\ca.c a\c
[…]字符集(字符类),对应的位置可以是字符集中任意字符。 字符集中的字符可以逐个列出,也可以给出范围,如 [abc] 或 [a-c], 第一个字符如果是 ^ 则表示取反,如 [^abc] 表示除了abc之外的其他字符。a[bcd]eabe 或 ace 或 ade
\d数字:[0-9]a\dca1c
\D非数字:[^\d]a\Dcabc
\s空白字符:[<空格>\t\r\n\f\v]a\sca c
\S非空白字符:[^\s]a\Scabc
\w单词字符:[A-Za-z0-9]a\wcabc
\W非单词字符:[^\w]a\Wca c
2) 数量词(用在字符或 (…) 之后)
语法说明表达式示例匹配结果
*匹配前一个字符 0 或无限次abc*ab 或 abccc
+匹配前一个字符 1 次或无限次abc+abc 或 abccc
?匹配前一个字符 0 次或 1 次abc?ab 或 abc
{m}匹配前一个字符 m 次ab{2}cabbc
{m,n}匹配前一个字符 m 至 n 次,m 和 n 可以省略,若省略 m,则匹配 0 至 n 次; 若省略 n,则匹配 m 至无限次ab{1,2}cabc 或 abbc
3) 边界匹配
语法说明表达式示例匹配结果
^匹配字符串开头,在多行模式中匹配每一行的开头^abcabc
$匹配字符串末尾,在多行模式中匹配每一行的末尾abc$abc
\A仅匹配字符串开头\Aabcabc
\Z仅匹配字符串末尾abc\Zabc
\b匹配 \w 和 \W 之间a\b!bca!bc
\B[^\b]a\Bbcabc
4) 逻辑、分组
语法说明表达式示例匹配结果
|| 代表左右表达式任意匹配一个,优先匹配左边的表达式abc|defabc 或 def
(…)括起来的表达式将作为分组,分组将作为一个整体,可以后接数量词(abc){2}abcabc
(?P…)分组,功能与 (…) 相同,但会指定一个额外的别名(?Pabc){2}abcabc
<number>引用编号为 的分组匹配到的字符串(\d)abc\11abe1 或 5abc5
(?P=name)引用别名为 的分组匹配到的字符串(?P\d)abc(?P=id)1abe1 或 5abc5
5) 特殊构造(不作为分组)
语法说明表达式示例匹配结果
(?:…)(…) 的不分组版本,用于使用 “|” 或后接数量词(?:abc){2}abcabc
(?iLmsux)iLmsux 中的每个字符代表一种匹配模式,只能用在正则表达式的开头,可选多个(?i)abcAbC
(?#…)# 后的内容将作为注释被忽略。abc(?#comment)123abc123
(?=…)之后的字符串内容需要匹配表达式才能成功匹配a(?=\d)后面是数字的 a
(?!..)之后的字符串内容需要不匹配表达式才能成功匹配a(?!\d)后面不是数字的 a
(?<=…)之前的字符串内容需要匹配表达式才能成功匹配(?<=\d)a前面是数字的a
(?<!..)之前的字符串内容需要不匹配表达式才能成功匹配(?<!\d)a前面不是数字的a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BLUE_SEVEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值