前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式·进阶

正则表达式·进阶

作者头像
心谭博客
发布2020-04-21 15:40:10
3370
发布2020-04-21 15:40:10
举报
文章被收录于专栏:YuanXinYuanXin

在阅读之前,希望您对正则表达式有过一些使用经验,本文介绍 4 个部分:

  • 锚点
  • 特征标群
  • 贪婪模式和惰性匹配
  • 零宽度断言

锚点

  • ^:匹配文本应该在字符串的开头
  • $: 匹配文本应该在字符串的结尾

例如 /^(T|t)he/ 匹配 The car is parked in the garage. 中的 The

对于多行文本,开启g(全局搜索)和m(多行修饰符)标志。例如对于多行字符串:

代码语言:javascript
复制
The car is parked in the garage.
The car is parked in the garage.

/^(T|t)he/gm 可以匹配两个 The

特征标群

特征标群是指写在 (...) 中的子模式。

用途 1: 子模式中可以包含多个字符,它们被视为“一体”。可以搭配*.? 使用。

用途 2: 配合|使用。例如 /(ab|ef)c/g 匹配 abc efc 中的 abc 和 efc。

贪婪模式和惰性匹配

正则表达式默认是贪婪模式,也就是尽可能多的匹配。例如 /.*at/ 匹配 The fat cat sat on the mat. 的全部。可以理解为:从符合匹配的位置开始,尽可能地向后搜索,直到不能向后。

开启惰性匹配的方法是使用 ?,形如 /.*?at//.+?at/。例如 /.*?at/ 匹配 The fat cat sat on the mat. 中的 The fat。可以理解为:从符合匹配的位置开始,向后搜索,一旦完成匹配,立即停止。

零宽度断言

虽然名字很唬人,但是它很有用。通俗来说,它用来检查符合匹配规则的字符串的前/后是否符合规则。

符号

描述

?=

正先行断言-存在

?!

负先行断言-排除

?<=

正后发断言-存在

?

负后发断言-排除

对于先行断言?=?!来说,它们检查“后面”是否符合规则。例如:

  • \(T|t)he(?=\sfat)\ 匹配 The fat cat sat on the mat. 中的 The
  • \(T|t)he(?!\sfat)\ 匹配 The fat cat sat on the mat. 中的 the

对于后发断言,它们检查“前面”是否符合规则。

推荐

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 锚点
  • 特征标群
  • 贪婪模式和惰性匹配
  • 零宽度断言
  • 推荐
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档