正则表达式入门

文章目录


正则表达式(Regular Expression,又称RegEx)是一种 文本模式,用于匹配一系列符合某个语法规则的字符串,应用于文本搜索、替换和提取。正则表达式是一种用于描述文本模式的规则语言。其在文本处理、数据抽取、数据清洗等方面有着广泛的应用。

语法

正则表达式由字符操作符构成,用于描述一组符合某种特定规则的字符串

常用的操作符包括:

  1. 字符匹配:普通字符表示该字符必须出现在目标字符串中;

  2. 元字符:用于表示一定类型的字符,如 \d 表示任意数字字符;

  3. 重复:用于表示该字符或元字符出现的次数,如 * 表示前一个字符或元字符可以出现零次或多次;

  4. 分组:用于将多个字符或元字符组合在一起;

  5. 转义字符:用于表示特殊字符,如 \n 表示换行符。

常用元字符:

  1. \d:匹配任意一个数字字符(0-9)
  2. \D:匹配任意一个非数字字符
  3. \w:匹配任意一个字母、数字或下划线
  4. \W:匹配任意一个非字母、数字或下划线字符
  5. \s:匹配任意一个空白字符(包括空格、制表符、换行符等)
  6. \S:匹配任意一个非空白字符
  7. [ ]:匹配其中的任意一个字符,如[abc]表示匹配a、b或c中的任意一个字符
  8. [^]:不匹配其中的任意一个字符,如[^abc]表示不匹配a、b或c中的任何一个字符

大写 和 ‘^’ 匹配补集

  1. . :匹配除换行符外的任意一个字符
  2. *:匹配前一个字符0次或多次,如a*表示匹配任意个a字符(包括0个)
  3. +:匹配前一个字符1次或多次,如a+表示匹配至少一个a字符
  4. ?:匹配前一个字符0次或1次,如a?表示匹配0个或1个a字符
  5. {m,n}:匹配前一个字符至少m次,至多n次,如a{2,4}表示匹配2~4个a字符
  6. ( ):创建一个子组,可以在后面的表达式中使用该组匹配到的内

模式

pattern 为要匹配的正则表达式

pattern = [...] 如下:

[待匹配的字符]
//普通可输出字符
[aBc] 匹配所有的'a','B','c'
[a-z]
[A-Z]
[^a-z]
[0-9]
[^A-Z0-9]


//其他可输出字符
[.]
[\s\S]
[\w]

//非打印字符
word\n //匹配以word开头,有一个换行符结尾的字符串
word\r //匹配以word开头,有一个回车符结尾的字符串
word\t //匹配以word开头,有一个制表符结尾的字符串
word\a //匹配以word开头,有一个警告符结尾的字符串
worf\v //匹配以word开头,有一个垂直制表符结尾的字符串
word\f //匹配以word开头,有一个换页符结尾的字符串
 
//特殊字符(\\ , \( , \} , \[ , \^等等用转义字符匹配)
{} //{匹配的次数}:{k}匹配k次
.  //匹配除了换行符之外的任意单个字符
*  //匹配前面的字符出现0次或多次
+  //匹配前面的字符出现1次或多次
?  //匹配前面的字符出现零次或一次
() //
eg. 
Hello.world 匹配以 Hello 开头,后接任意一个字符,然后再是 World 的字符串
Helloo*World 匹配以 Hello 开头,后面接任意数量的o,然后是 World 的字符串
(hello){2} 匹配hellohello
//限定符, 即特殊字符的组合,用于限定pattern出现次数等形式
{n, m} //至少匹配n次,最多匹配m次,可缺省其一
{k}    //匹配

//定位符
^  //^[]定位pattern开头;[^]范围取反。注意区分
$  //匹配输入字符串结尾的位置
\b //匹配一个字与空格间的位置
\B //非单词边界匹配

注:不能将限定符与定位符一起使用

由于匹配优先级不同,限定符可分为贪婪、非贪婪

  • * 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字
  • 只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配

应用

正则表达式python应用
正则表达式JS应用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值