正则表达式

正则表达式基础教程
本文介绍了正则表达式的常用元素及其用法,包括普通字符、转义字符、预定义字符集、自定义字符集、数量限定符及特殊符号等,并提供了多个实例帮助理解。

8个常用正则表达式:https://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

正则表达式30分钟入门:http://deerchao.net/tutorials/regex/regex.htm

普通字符

字母、数字、汉字、下划线以及没有特殊定义的标点符号都是普通字符。

表达式“c”,在匹配字符串“abcde”是,匹配成功,range=(2,1)
转义字符

数显不便的字符以及正则表达式中有特殊用途的字符,需要加转义字符:\r \n \ \^ \$ . 等

表达式"\$d",在匹配字符串"abc$de",匹配结果成功,range=(3,2)
能够与多种字符匹配的表达式
  • \d:0-9任意一个数字
  • \D:所有非数字字符
  • \w:任意一个字母、数字或下划线,A~Z、a~z、0-9
  • \W:所有字母、数字、下划线以外的字符
  • \s:空格、制表符、换页符等空白字符
  • \S:所有非空白字符
  • . : 小数点可以匹配除换行符(\n)以外的任意一个字符
表达式"\d\d" ,可以匹配任意两位数字
表达式"a.\d",可以匹配"a 任意字符 数字",字符串"aaa100",匹配结果是"aa1"
自定义能够匹配多种字符的表达式

中括号[]包含一系列字符,能够匹配其中任意一个字符。

  • [ab5@]:匹配"a"或"b"或"5"或"@"
  • [^abc]:匹配除"a","b","c"之外的任意的字符
修饰匹配次数的特殊符号

次数修饰放在被修饰的表达式后边。

  • {n}:表达式重复n次。\w{2}相当于"\w\w";a{5}相当于"aaaaa"
  • {m,n}:表达式最少重复m次,最多重复n次。ba{1,3}相当于ba 或 baa 或 baaa
  • {m,}:表达式最少重复m次。\w\d{2,}可以匹配a12 M123 _33333
  • ?:匹配表达式0次或1次,相当于{0,1},a[cd]?可以匹配 ac ad a
  • +:表达式最少出现1次,相当于{1,},a+b可以匹配ab aab aaab
  • *:表达式不出现或出现任意次,相当于{0,},比如 "\^**b"可以匹配b ^b ^^b
代表抽象意义的特殊符号
  • ^:与字符串开始的地方匹配,不匹配任何字符,^aaa在匹配"xxx aaa xxx"时,匹配失败,因为 ^ 要求与字符串开始的地方匹配,只有aaa位于字符串开头的时候,才能匹配成功;
  • $:与字符串结束的地方匹配,不匹配任何字符,aaa$在匹配"xxx aaa xxx"时匹配失败,因为$要求与字符串结束的地方匹配,只有aaa位于字符串结尾的时候,才能匹配成功;
  • \b:匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符,\babc表示abc前面
  • \B:匹配非单词边界
  • | :左右两边表达式“或”关系,匹配左边或右边,表达式“tom|jack” 匹配字符串 "I'm Tom, he is Jack" 时匹配成功;
  • ():将括号中的内容作为一个整体取匹配,(go\s*)+ 匹配字符串Let`s go go go! 时,匹配成功

其他语法

正向、反向预搜索
  • (?=xxxxx):在被匹配的字符串中,对所处的缝隙或两头附加的添加是:所在缝隙的右侧,必须能够匹配上xxxxx这部分的表达式。
表示字符

"\xXX" 和 "\uXXXX" 表示一个字符("X" 表示一个十六进制数)

在表达式中有特殊意义,需要添加 "" 才能匹配该字符本身的字符汇总
^:匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"

$:匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"

( ):标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"


{ }:修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"

.:匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."

?:修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?"

+:修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "\+"

*:修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"

|:左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"

转载于:https://my.oschina.net/mexiaobai1315/blog/1581648

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值