博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式
阅读量:6171 次
发布时间:2019-06-21

本文共 1867 字,大约阅读时间需要 6 分钟。

hot3.png

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

你可能感兴趣的文章
Python组织文件 实践:将带有美国风格日期的文件改名为欧洲风格日期
查看>>
SSH由WAS/Tomcat/Weblogic迁移到JBOSS
查看>>
4. Add override methods to class
查看>>
JavaScript----Performance Tool and Process
查看>>
设计模式
查看>>
下载企业级证书打包的app 出现“无法下载应用程序”的问题
查看>>
XY8782S00 BL-W8782 BL-R8782MS1 SDIO接口 高性能、低功耗、体积小 wifi无线模块
查看>>
UBUNTU 字符界面来回切换
查看>>
C# and android and socket
查看>>
Replication--备份初始化需要还原备份么?
查看>>
Afinal的使用(二):使用FinalHttp抓取网页内容
查看>>
jQuery实用的语法总结
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(25)-权限管理系统-系统管理员(附生成器)...
查看>>
复习二叉搜索树作的几道题
查看>>
java (java.exe) 解释器 -D 选项
查看>>
九度 1552 座位问题(递推DP)
查看>>
JAVA变量的执行顺序
查看>>
http://qt-project.org/wiki/Category:Developing_with_Qt::QtWebKit#ff7c0fcd6a31e735a61c001f75426961
查看>>
ZOJ 1202 Divide and Count(排列组合)
查看>>
[转]发布基于T4模板引擎的代码生成器[Kalman Studio]
查看>>