正则表达式在VS中的使用

一、基本语法概览

表达式说明
.匹配除分行符外的任意一个字符
匹配前面表达式零次或一次或指明一个非贪婪限定符
*匹配前面表达式零次或多次
+匹配前面表达式一次或多次
\w匹配任意一个单词字符
\W匹配任意非一个单词字符
\d匹配任意一个数字字符
\D匹配任意一个非数字字符
\s匹配任意一个空白字符,包括包括tab和换行符
\S匹配任意一个非空白字符
{3}匹配三个连续的前面表达式
{3,5}匹配三个到五个连续的前面表达式
{3,5}匹配三个以上连续的前面表达式
[]匹配 [] 内的任何一个字符。要指定字符的范围,请列出由短划线 (-) 分隔的起始字符和结束字符,如 [a-z] 中所示。
[^]匹配跟在 ^ 之后的不在字符集中的任意字符
^将匹配字符串锚定到行首
$将匹配字符串锚定到行尾
\b匹配一个单词边界,即字与空格间的位置
\B非单词边界匹配
()标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用
\1对第一个子表达式的引用
$1对第一个子表达式的替换
|或运算符

二、应用实例

1、匹配空格字符

(?([^\r\n])\s)

2、匹配行尾单词

\w+\r\n

3、贪婪模式和懒惰模式

贪婪模式

\".+\"
"dfdsf","dfsdf "贪婪模式会选中最两侧双引号之间的所有字符

懒惰模式

\".+?\"
"dfdsf","dfsdf "懒惰模式会分别选中两个字符串
  • 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

4、匹配整数和小数

\b[0-9]*\.*[0-9]+\b

5、 反向引用

所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 \n 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。

\b([a-z]+) \1\b   // 查找重复单词

6、先行断言和后行断言

1)零宽正向先行断言
exp1(?=exp2):查找 exp2 前面的 exp1
2)零宽正向后行断言
(?<=exp2)exp1:查找 exp2 后面的 exp1
3)零宽负向先行断言
exp1(?!exp2):查找后面不是 exp2 的 exp1
4)零宽负向后行断言
(?<!=exp2)exp1:查找前面不是 exp2 的 exp1
2 种后行断言有所限制,这个表达式必须是定长的,即不能使用 、+、? 等元字符,如 (?<=abc) 没有问题,但 (?<=abc) 是不被支持的。

三、参考文献

https://blog.csdn.net/qq_42667613/article/details/112983161
https://www.runoob.com/regexp/regexp-syntax.html

  • 25
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值