入门正则表达式

正则表达式

1.概念

正则表达式是一种含有某种规则的模式,被用来检索、替换符合给定模式的文本。

全称为 Regular Expression,在 JavaScript 中简写为 RegExp。

2.字符

常用的元字符如下:

\              转义符,例如匹配符号"*",则要写成"\*"。因为有些特殊字符是元字符,有特定含义,所以在匹配这些特殊符号时,要在符号前加 \ 。特殊符号比如 \ ^ $ . * + ? 等。

^             匹配行或字符串的起始位置。

$             匹配行或字符串的结尾位置。

.              (点号)匹配除换行符之外的任何单个字符

\w           匹配包括下划线的任何单词字符(匹配字母、数字、下划线或汉字)。

\s            匹配任意空白字符。

\d            匹配一个数字字符。

\b            匹配单词的开始或结束位置。

[xyz]       字符集合,匹配所含的任意一个字符,等价于下面的 [a-z]。

[a-z]        字符范围,匹配指定范围内的任意字符

反义,顾名思义,就是相反的意思,对照着上面最后几个元字符看。

\W           (注意是大写字母)匹配任何非单词字符(匹配不是字母、数字、下划线或汉字的字符)。

\S            (注意是大写字母)匹配任何非空白字符。

\D            (注意是大写字母)匹配一个非数字字符。

\B            (注意是大写字母)匹配不是单词开始或结束的位置。

[^xyz]     负值字符集合,匹配未包含的任意字符。

[^a-z]     负值字符范围,匹配任何不在指定范围内的任意字符。

限定符

*             匹配前面的子表达式0次或多次。

+            匹配前面的子表达式1次或多次。

?             匹配前面的子表达式0次或1次。

{n}         n为非负整数,是一个确定的数字,匹配前面的子表达式n次。

{n,}        n为非负整数,是一个确定的数字,匹配n次或多次。

{n,m}     n和m均为非负整数,都是确定的数字,匹配最少n次,最多m次。

贪婪量词

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

*?           匹配多次,尽可能少匹配

+?          匹配1次或多次,尽可能少匹配

??           匹配0次或1次,尽可能少匹配

{n,}?       n为非负整数,是一个确定的数字,匹配n次或多次,尽可能少匹配

{n,m}?    n和m均为非负整数,都是确定的数字,匹配最少n次,最多m次,尽可能少匹配

3.捕获分组

(exp)                  匹配exp,并捕获文本到自动命名的组里。

(?<name>exp)   匹配exp,并捕获文本到名称为name的组里。

(?:exp)               匹配exp,不捕获匹配的文本,也不给此分组分配组号。

零宽断言

下面四个表达式用于查找在某些内容(不包括这些内容)之前或之后的文本,用于指定一个位置,这个位置要满足一定的条件(即断言),因此它们也被称为零宽断言。

(?=exp)              匹配exp前面的位置。

例如匹配字符串 "I love JavaScript" 的正则表达式为 "(?<txt>.+(?=ing))",这里取 "Script" 前面的所有字符,并定义了一个名字为 "txt" 的捕获分组,这个 "txt" 组里的值为 "I love Java"。

(?<=exp)            匹配exp后面的位置。

例如匹配字符串 "I love JavaScript" 的正则表达式为 "(?<txt>(?<=I).+)",这里取 "I" 后面的所有字符,并定义了一个名字为 "txt" 的捕获分组,这个 "txt" 组里的值为 " love JavaScript"。

(?!exp)                匹配后面跟的不是exp的位置。

例如匹配 "123abc",可以写成 "\d{3}(?!\d)",匹配3位数字后非数字的结果。

(?<!exp)              匹配前面不是exp的位置。

例如匹配 "abc123",可以写成 "(?<!\d123",匹配 "123" 前面是非数字的结果。

4、运算符优先级

正则表达式从左到右进行计算,并遵循优先级顺序。相同优先级从左到右进行计算,不同优先级先高后低。
下表从高级到低级排序:
\                                                     转义符

(),(?:),(?=),[]                                 圆括号和方括号

*,+,?,{n},{n,},{n,m}                     限定符

^,$,\任何元字符、任何字符                定位点和序列

|                                                     替换“或”操作

最后更新于2016.12.22

时间: 2024-11-03 02:20:30

入门正则表达式的相关文章

深入入门正则表达式(java) - 命名捕获

深入入门正则表达式(java) - 引言 深入入门正则表达式(java) - 1 - 入门基础深入入门正则表达式(java) - 2 - 基本实例 深入入门正则表达式(java) - 3 - 正则在java中的使用 深入入门正则表达式(java) - 匹配原理 - 1 - 引擎分类与普适原则 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯 深入入门正则表达式(java) - 命名捕获 很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net

20分钟入门正则表达式

晚上好,小伙伴们! 520了,其实单身的我还是挺忧伤的.不过还好,我们有梦想在,要想成功就得经得起煎熬. 20分钟入门正则表达式,我觉得对于稍微有点编程基础的童鞋来说,绝对不是一句神话.如果你学习过<编译原理>,那你肯定能够深刻理解所谓的“正则表达式”. 简单汇总一下笔记,温故而知新. 正则表达式规则  1. 1普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符. 举

Linux 基础入门----正则表达式基础

介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把它说明清楚需要单独一门课程来实现,不过我们这一节中涉及到的相关内容通常也能够满足很多情况下的需求了. 想要更深入地学习使用正则表达式,在这里 正则表达式基础. 一.正则表达式 什么是正则表达式呢? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Ex

30分钟入门正则表达式 学习笔记

原文 有一个问题,在此记录: 在负向零宽断言里面,匹配q后面不是u的单词. 使用 \b\w*q(?!u)\w*\b 不能解决 qsqu这种情况. 即qs已经消耗了负向零宽断言,但是仍然存在qu的这种情况. 学习笔记: \b #元字符 只匹配一个位置 \bhi\b #精确查找hi这个单词 \bhi\b.*\bLucy\b #hi后面不远处跟着一个Lucy 0\d{2}-\d{8} #匹配012-12345678电话号码 元字符 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w

正则表达式简单入门

 正则表达式简单入门    正则表达式在平常编程中有着大量的应用,对于任何一个想学习编程的人来说,正则表达式是一个必须掌握的知识. 废话不多说,下面先对正则表达式做一个简单的入门介绍,在后续的文章中,将会进行详细的介绍.    一.元字符 元字符一共有12个:$ ( ) [ { ? + * . ^ \ | 元字符有特殊的含义,如果要使用其字面值,则必须对其进行转义. 如: \$  \*  \( 等等 二.控制字符或不可打印字符 \a  警报 \e  退出 \f  换页 \n  换行 \r 

正则表达式学习方法及笔记

最近参加了百度ife的前端培训,在完成task0002的过程中要求学会正则表达式,曾经在javascript的教学图书中有看过正则表达式,但都讲的不够系统,自己也不够重视,所以就几乎是正则表达式零基础.于是花了不到一个晚上的时间把<入门正则表达式>看完了,一百多页,比网上的大多数教程系统,入门足矣. 首先推荐两个在线测试正则的网站,边学边测试反复实践当然学的更快了. http://regexpal.com/ http://regexr.com/ 个人更喜欢用第二个,功能更加齐全,而且界面更美观

正则表达式必知必会--学习笔记

第一章,表达式入门 正则表达式(regular expression)和正则表达式语言已经出现很久了,正则表达式是一种工具,和其他工具一样,它是为了解决一类专门的问题而发明的,就像我们的播种机,是为了播种而发明的.那么主要来解决什么问题呢?我们经常用的到的,从一个文件夹中,快速的找到一个文件,在表单中,验证一个邮箱,我们也会用到正则.我们主要用正则表达式来进行搜索和进行替换,书上的解释是正则表达式是用来匹配和处理文本的字符串.正则表达式是用正则表达是语言创建的,用来解决我们前面所提到的问题,验证

《正则表达式必知必会》 笔记

笔记说明:  在本笔记里  所有正则表达式 都嵌套在 []  (中文字符里) 目录 第1章 正则表达式入门 正则表达式 (regular expression ,简称 regex). 正则表达式 用在 搜索 和 替换 . 定义: 一些用来匹配和处理文本的字符串.    (字符串 ====> 用来匹配和处理文本) 第2章 匹配单个字符 2.1匹配纯文本 [http] . 在javascript里, [g] global 全局,将返回一个包含着所有匹配结果的数组 [i] 强制执行一次不区分大小的执行

[Linux 006]——grep和正则表达式

在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配,这是一个强大的功能,有必要好好掌握. 1.grep 初体验 grep PATTERN [OPTIONS] FILE:在文件中按照模式进行查找.FILE 是我们要查找的目标文件,如果不指定目标文件,grep 将会从标准输入中读取输入的内容,然后进行匹配.为了方便起见,本文的所有演示都在命令行中通过标准