正则表达式

原创 2015年11月18日 16:17:59

今天看到一正则表达式:/(.*?:\/\/)(.*)/
对第一个星号后面的问号不懂。查了下发现是非贪婪模式。
干脆把相关东西整理一下。并找到一个很好的网站,还可以参考这个


正则表达式到底是什么?
按照网上的说法可以这么描述:
正则表达式就是一种模式,这种模式有一个或者多个
字符(character literals)、运算符(operators),构造(constructs)构成。


字符:

(1)character escapes,转义字符。
匹配一个字符,这个字符要么匹配一个特殊字符,要么匹配一个原义字符。
比如\t匹配的是特殊字符tab,这些特殊的字符有专门的定义。
如果一个字符不在这个定义范围内,那么匹配的就是字符本身,比如\*用来匹配星号。

(2)character classes,暂时叫字符类。
字符类匹配的是一个某类字符。英文写成character class。
字符类本身可能有多个字符表示,比如[]或者\d。
但是有一点要注意的是,这个只匹配一个字符。

(3)anchors,锚定字符。
不匹配具体的字,但是用来制定匹配的位置。
前面的匹配关心的是内容。但是很多时候需要关心在什么地方进行匹配。

构造

(4)group construts,组构造器。
匹配由多个字符组成的一组字符。
(5)alternation constructs,变换构造器。一般和Group construts放一起说。
(6)backreference constructs,反引用构造器。

数量

(7)quantifiers,数量字符。
标记用于制定前面元素的数量。这个元素可以是某个字符,某类字符,以及某一组字符。比如+字符,\b+就是制定某类字符出现的数量,

(8)substitution,替换字符。
细分的话有这八类。也有的把其中几类分到一起。
这里只写个解析时候最顶层的分类分析。


说明

quantifiers 可以用来group所以
(\d{2}){2,4}是合法的,并且能匹配1234567890的前8个字符。
(\d{2}){2,4}?是合法的,并且能匹配1234567890的前4个字符。

正则表达式中的"^"这个符号的一些思考

在学习正则表达式的时候,一些常见的规则我们都不难理解,但是有 一个正则表达式中的特殊字符让我一直有点搞不懂,就是”^”这个字符,文档上给出了解释是匹配输入的开始,如果多行标示被设置成了true,同时会...
  • sufubo
  • sufubo
  • 2016年03月27日 11:03
  • 17643

正则表达式之?、(?:pattern)、(?!pattern)、(?=pattern)理解及应用

今天朋友问我一个问题,是这样子的,通过正则表达式匹配html标签input包含hidden的字符串,具体如下: "" 匹配下来,应该输出: "" 读了这个问题之后,觉得挺简单的,直...
  • sunhuaer123
  • sunhuaer123
  • 2013年11月15日 19:09
  • 59406

正则表达式实现与或非关系

写一个正则表达式,要求匹配字符串同时满足条件A和条件B 我们可以先写两个子表达式PatternA和PatternB,分别校验条件A和条件B。然后结合成一个新的表达式 (?=PatternA)P...
  • lyd135364
  • lyd135364
  • 2016年11月14日 11:34
  • 5300

C++标准库中正则表达式简介

C++标准库中正则表达式的使用                                                                                    ...
  • qianghaohao
  • qianghaohao
  • 2016年02月24日 03:22
  • 3433

正则表达式——入门

写程序7年,从我身边接触到的人来看,相当多的程序员把正则表达式看得很高深,甚至觉得是一道不可跨越的鸿沟。有此想法的原因很简单:只是因为你没有花上几个小时的时间去学习一下正则的基础。对,只需要几个小时,...
  • sq_zhuyi
  • sq_zhuyi
  • 2013年10月18日 10:29
  • 18450

正则表达式 "^+$"等符号意义

1、字符/: 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分...
  • github_36362235
  • github_36362235
  • 2016年11月23日 11:31
  • 1493

Java基础视频教程第25天_正则表达式

一、正则表达式——特点 正则表达式:符合一定规则的表达式。 作用:用于专门操作字符串。 String 类中对正则表达式应用的其中一个方法: boolean matches(String ...
  • yc081216
  • yc081216
  • 2015年03月20日 13:15
  • 762

《精通正则表达式》笔记

正则表达式 (cleregular expression)     正则表达式是高效,强大,便捷的文本处理工具,本身,再加上如同一门袖珍编程语言的通用模式表示法(general pattern no...
  • key330
  • key330
  • 2016年08月18日 10:06
  • 925

正则表达式大全(深度解析)

说明:         这是一个 Swift 版的正则表达式的使用和解读。一共有三种使用的方法。和一些常用的正则表达式。 第一:首先看一个枚举 简介:它是一个写在oc里面的一个枚举,但是它使用在...
  • zhoushuangjian511
  • zhoushuangjian511
  • 2016年05月05日 21:45
  • 744

正则表达式的几种类型

【匹配】matchs方法 package regex; import java.util.regex.Matcher; import java.util.regex.Pattern; publ...
  • u013797038
  • u013797038
  • 2015年10月28日 19:16
  • 702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)