一或多次重复字符

为了告诉正则表达式引擎一个字符必须存在,也可以重复不止一次,我们用+字符,像

下面的例子也会返回true:

零或一次重复字符

我们也可以告诉正则表达式引擎,一个字符必须是或者只存在一次,或者没有。我们用?字符来做这项工作,就像

如果我们愿意,我们完全可以从上面的搜索字符串中删除’c’,这个表达式会仍旧返回true.’?’ 的意思是一个’c’可以出现在搜索字符串的任何地方,但不是必须的。

正则表达式语法 (续)

空格字符

为了匹配一个搜索字符串中的空格字符,我们用预定义Posix的类,[[:space]].方括号标明连续字符的相关性,”:space:”是实际要匹配的类(在这种情形下,是任何空白字符)。空白包括tab字符,新行字符,空白字符。或者,如果搜索字符串必须包含只有一个空格,而不是一个tab或者新行字符,你可以用一个空格字符(" ")。在大多数情况下,我倾向于使用":space:",因为这意味着我的意图不仅仅是单个空格字符,这点很容易被忽视。这里有一些Posix-标准预定义类,

有一些我们可以作为正则表达式的部分的一些Posix-标准预定义类,包括[:alnum:], [:digit:], [:lower:]等等。 完整的列表可以在这里查看

我们可以像这样匹配单个空白字符:

我们也可以通过在表达式后用?字符来告诉正则表达式引擎匹配没有空白或者一个空白。

模式分组

相关的模式可以在方括号里分在一起。很容易用[a-z]和[A-Z]指定只有一个小写字母或者一列大写字母以搜索字符串的一部分存在。

或者像

我们也可以告诉正则表达式引擎,我们希望或者是小写字母,或者是大写字母。我们只要把[a-z]和[A-Z]模式结合在一起就可以做到。

在上面的例子里,如果我们能匹配"John Doe",而不是"JohnDoe",将是非常有意义的。我们用下面的正则表达式来做这个:

^[a-zA-Z]+[[:space:]]{1}[a-zA-Z]+$

很容易搜索一个数字字符串

词语分组

不仅仅搜索模式可以分组,我们也可以用圆括号把相关的搜索词语进行分组。

在上面的例子中,我们有一个字符串头部字符,紧跟着"John"或者"Jane",至少有一个其它字符,然后一个字符串尾部字符。所以…

...将也匹配我们的搜索模式

特殊字符的情形

因为一些字符要用在一个搜索模式的明确分组或者语法上,像在(John|Jane)中的圆括号,我们需要告诉正则表达式引擎来屏蔽这些字符,加工它们使之成为被搜索字符串的一部分,而不是搜索表达式的一部分。我们所用的方法称为“字符转义”,涉及到将任何“专用符号”加上反斜杠。所以,例如,如果我想在我的搜索中包含’|’,那么我就可以这样做

这里只是少量的一些你要转义的字符,你必须转义^, $, (, ), ., [, |, *, ?, +, and { 。

希望你现在对正则表达式实际上有多么强大有了一点点感觉了。现在让我们看两个用正则表达式来检查数据中一个字符串的例子。

正则表达式例子

例子1

让我们把第一个例子做的相当简单,检验一个标准的URL.一个标准的URL(没有端口号),有三个部分构成:

[协议]://[域名]

让我们从匹配URL的协议部分开始,并且让它只能用http或者ftp.我们可以用下面的正则表达式做到这点:

^(http|ftp)

^字符特指字符串的头部,利用圆括号把http和ftp围住,且用“或者”符号(|)将它们分开,我们告诉正则表达式引擎http和ftp两者之一必须在字符串的开头。

一个域名通常由www.somesite.com构成,但是可以随意选择要不要www部分。为了例子简单,我们只允许.com,.net,和.org的域名是在考虑之中的。我们最好这样对正则表达式中的域名部分表示如下:

(www.)?.+.(com|net|org)$

php正则表达式 或与,PHP和正则表达式相关推荐

  1. java正则表达式及api_JAVA常用API:正则表达式regular expression

    一.正则表达式的概念 正则表达式,regular expression,在代码中通常简写成regex 正则表达式是一个字符串,使用每单个字符串来描述.定义匹配规则,匹配一系列符合某个语法规则的字符串. ...

  2. python正则表达式入门_Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

  3. mysql触发器可以使用正则表达式_SQL 正则表达式及mybatis中使用正则表达式

    这篇文章主要介绍了SQL 正则表达式及mybatis中使用正则表达式的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 mysql 提供的模式匹配的其他类型是使用扩展正则表达式. 当你对这 ...

  4. java生日正则表达式_Java编程基础15——正则表达式常用工具类

    1_正则表达式的概述和简单使用 A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有用户名和密码,一般会 ...

  5. 正则表达式发明者_浅谈正则表达式背后的基本原理

    一.写在前面 搞编程的都知道正则表达式是什么东西,这里就不多啰嗦了,需要强调的是,这篇文章并不是教你怎么去使用用正则表达式,正则表达式的语法并不是本文的重点,这篇文章的目的就是剥开正则表达式的语法糖, ...

  6. python perl正则表达式_python学习笔记(正则表达式)

    什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.最简单的正则表达式就是普通字符串,可以匹配其自身.换包话说,正则表达式'python' 可以匹配字符 ...

  7. 正则表达式入门教程经典Javascript正则表达式(share)

    前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...

  8. php 正则表达式 文档,php的正则表达式完全手册

    php的正则表达式完全手册 更新时间:2011年02月06日 17:12:49   作者: 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感.只要认真去阅读这 ...

  9. java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...

    主要用到的是这两个类 - java.util.regex.Pattern - java.util.regex.Matcher. Pattern对应正则表达式,一个Pattern与一个String对象关 ...

  10. 正则表达式(一)认识正则表达式

    从开始学java语言就接触了正则表达式,但是一直没有系统学习过,这次能顺利进入中软公司,多亏了正则表达式.因为周二机试的题目就是写一个关于邮箱验证的正则表达式.让我看到了公司对正则表达式的重视.现在有 ...

最新文章

  1. 2021年夏季学期“清华大学大数据能力提升项目” 招募《大数据实践课》企业合作项目...
  2. RT-Thread逐飞-智能车培训之RT-Thread在全向行进组中的应用
  3. K-Means 聚类实例sample
  4. Python的global语句
  5. hbase操作,创建命名空间,创建hbase表,添加数据,删除数据,通过RowKey获取数据,扫描数据,获取所有的表,获取ColumnFamily,删除表,获取hbase命名空间
  6. 怎么恢复linux定时器任务,定时操作 crontab at 以及恢复定时操作
  7. Mongodb 3.0 创建用户
  8. html点击发送qq邮箱_qq邮箱怎么发送文件夹
  9. python perl 正则_为什么说perl的正则表达式功能比Python强大
  10. 微软sql服务器可以卸载,完美卸载SQL Server 2008的方法
  11. PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
  12. uniapp跳转指定小程序
  13. python apkg_GitHub - TonyDongGuaPi/pc_wxapkg_decrypt_python: PC微信小程序 wxapkg 解密
  14. 四种用电脑给手机发短信方法
  15. Google Play 政策更新重点回顾 (上) | 2022 年 4 月
  16. 捕获组合键 键盘组合键
  17. 启动Tomcat6.x时manager does not exist or is not a readable directory
  18. 微信支付之 内网穿透
  19. iconfont官网中的图标保留其原本的颜色
  20. ubuntu/cotos(linux)下配置jdk环境变量

热门文章

  1. C++ OpenCV视频摄像头图片读写操作
  2. Struts2之配置使用
  3. 捂碳星球|换季整理衣橱,衣服该怎么存放和处理?
  4. linux命令打包文件,Linux系统中打包文件的命令详解
  5. 基于全景相机的视觉里程计算法研究
  6. X-Frame-Options(点击劫持)
  7. 阿里云配置SSL证书
  8. TensorFlow 日漫风新项目
  9. Pytnon0126
  10. python处理两个Excel并且根据相同字段合并写入一个新的Excel