重复匹配 正则表达式中匹配多个字符的办法就是通过使用集中特殊的元字符来做到。
1. 匹配一个或多个字符,使用元字符+。
(1) + 可以用来匹配一个活多个字符集合,如:\w+ \d+ \w+@\w+.\w+ [\w\.]+
在此,再强调一个概念: 字符集就是存在于[]中间的内容。[]的常规用法是吧多个字符定义为一个集合
[0-9]+ 匹配一个活连续出现的数字
2. 匹配零个或者多个字符,使用元字符*; 在正则表达式中*和+的用法完全一样--->只要把它放在一个字符或者一个字符集的后面,就可以生效。
如: [\w.]+[\w.]+\.\w+ ----> [\w]+[\w.]*@\.\w+
3. 匹配零个或者一个字符, 使用元字符?
如: [\r]?\n[\r]?\n
4. 匹配重复的次数,设置重复次数需要使用{和},把相关值填入即可。
(1) 为重复匹配次数设定一个精确的值,把数字写在{}中间;{3} 意味着模式里的前一个字符或者字符集合必须在原始文本里连续重复出现3次才算一个匹配。
(2) 为重复匹配次数设定一个区间,如{3,5}含义是最少重复3次,最多5次。
例子:匹配日期的多种格式\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}
注意: 例子中使用/ 的转义序列\/. 这在有些正则表达式分析器中要求必须这样做,有的是不必要的; 为了避免不必要的麻烦最好总使用期转义序列。
5. 匹配"至少重复多少次" 即{}中省略了最大值部分,例如:{3,}
例子: 文本 1001: $496.90 1009: $26.54 1004 $323.00 \d+:\$\d{3,}\.\d{2}
容易忽视的:
过度匹配
?只能匹配零个或一个字符,{n}和{m,n}也有一个重复次数的上限; 但是其它的重复匹配语法在重复次数方面都灭有上限值,而这样走有事会导致过度匹配的现象。
过度匹配实例:
在下面的文本中把<B>标签里的文本匹配出来(为了对这些文本进行替换或其它)
I should offer u his hand in the marriage at any time if u want. U can hold the wedding in <B>UK</B> and <B>HK</B>.
匹配的正则表达式是:<[Bb]>.*</[Bb]> 得到的结果是
<B>UK</B> and <B>HK</B>.
原因是:
*和+都是所谓的"贪婪型"元字符,它们在进行匹配是的行为模式是多多益善而不是适可而止的。它会尽可能低从一端文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配是为止。
解决办法是采用"懒惰型"写法(匹配尽可能少的字符)
"懒惰型"元字符写法很简单,只要给贪婪心元字符加上一个?后缀即可。
贪婪型 对应的 懒惰型
* *?
+ +?
{n,} {n,}?
特别提醒: 请务必根据具体情况来选用"贪婪型"或"懒惰型"元字符。
分享到:
相关推荐
正则表达式是用于匹配字符串模式的一种强大工具,它使用特定的语法来描述字符串的特征,如单个字符、字符集、重复次数等。在易语言中,正则表达式类提供了多种方法来操作和分析字符串: 1. **创建**:创建正则...
### 正则表达式——递归匹配与非贪婪匹配 #### 一、递归匹配 在正则表达式中,递归匹配是一个重要的概念,它主要用于处理那些具有嵌套结构的数据,例如数学公式中的括号匹配或HTML标签的匹配。 ##### 1.1 嵌套...
正则表达式(Regular Expression)是一种模式匹配工具,在文本处理领域有着广泛的应用,尤其是在JavaScript等编程语言中,用于字符串搜索、替换以及提取等功能。本文将详细介绍一系列常用的正则表达式及其应用场景,...
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配字符串模式,广泛应用于数据验证、搜索、替换等场景。在IT行业中,掌握正则表达式是提高工作效率的重要技能之一。 正则表达式的...
正则表达式(Deelx版)是一种强大的文本处理工具,它允许程序员和用户通过预定义的模式来匹配、查找、替换或者分析字符串。Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景...
正则表达式是一种强大的文本匹配工具,它可以简洁地表示复杂的搜索模式。通过使用正则表达式,可以简化上述例子中的SQL查询语句。例如,同样的查询可以使用如下语句完成: ```sql SELECT * FROM Tablel WHERE name ...
通过特定的字符组合,正则表达式能够匹配符合某种模式的字符串。在处理IP地址时,正则表达式可以帮助我们验证一个字符串是否符合IPv4地址的标准格式。 ### IP地址的正则表达式分析 给定的正则表达式为:(25[0-5]|2...
在Linux系统中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于匹配、查找、替换等操作,广泛应用于数据提取、文件搜索、脚本编程等多个领域。本合集主要围绕如何在Linux环境下利用正则表达式...
使用这个封装好的模块,你可以避免重复编写正则表达式的验证代码,提高代码的可复用性和一致性。在压缩包中的myRegExp文件很可能是包含这个封装的源代码,你需要将其添加到你的项目中,并按照提供的文档或示例进行...
正则表达式,简称为正则,是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换。在计算机科学和编程领域,正则表达式是处理文本的基础,广泛应用于数据验证、搜索、替换和提取等多种场景。下面将详细...
在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在本示例中,我们将讨论如何利用正则表达式来检测字符串中重复出现的词。这个功能在数据清洗、文本分析、日志...
1. 避免重复计算:对于相同的正则表达式,我们可以通过预编译构造出NFA,避免重复解析。 2. 避免回溯:利用NFA的特性,避免在处理量词时回溯。 3. 使用KMP或Boyer-Moore等高级字符串搜索算法,提高字符串匹配的效率...
正则表达式(Regular Expression,简称regex)是用于在文本中搜索、匹配和操作字符串的强大工具。它由一系列字符和特殊符号组成,可以用来描述一个模式,进而对文本进行高效和精确的查找、替换或者分割等操作。在...
- **分组**:使用括号(())将一部分正则表达式分组,便于引用或重复使用。 - **反向引用**:如(\w)\1,匹配相同字符的两次出现。 - **选择**:使用管道符(|)表示或关系,如ab|cd,匹配'ab'或'cd'。 - **边界匹配*...
接着,定义了一个名为`SocialSecurityNumberValidator`的类,在主方法中使用`Pattern.compile`编译正则表达式,并使用`matcher.matches`来检查字符串是否与给定的模式匹配。 通过上述知识点的学习,读者可以了解到...
- **JavaScript中的正则表达式**:JavaScript的正则表达式对象提供了丰富的功能,包括全局匹配、忽略大小写等选项。 - **.NET框架中的正则表达式**:通过System.Text.RegularExpressions命名空间提供支持。 #### 六...
正则表达式是一种特殊的文本字符串,用于描述复杂或重复的文本模式。它们在搜索、替换、数据提取等任务中非常有用。在Qt中,QRegExp类提供了对正则表达式的支持,包括构造、匹配、替换等功能。 1. **QRegExp构造**...
1. **性能提升**:编译后的正则表达式对象可以多次重复使用,避免了每次都解析字符串的过程,提高运行速度。 2. **代码清晰**:将正则表达式模式与执行操作分开,使代码更易读、更易于维护。 3. **预处理错误检查**...
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Java编程语言中,正则表达式是一个强大的工具,能够帮助开发者高效地处理字符串。...