正则表达式概念以及语法的使用

这篇具有很好参考价值的文章主要介绍了正则表达式概念以及语法的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.概念

2. 为什么使用正则表达式?

3. 语法

1.普通字符

非打印字符

2. 特殊字符

3. 限定符

4. 定位符

5. 运算优先级

3.匹配规则

1. 基本模式匹配

2. 字符簇

3. 确定重复出现


1.概念

正则表达式(Regular Expression)是一种文本模式包括普通字符(例如,a 到 z 之间的字母)
和特殊字符(称为"元字符"),正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

2. 为什么使用正则表达式?

典型的搜索和替换操作要求您提供与预期的搜索结果匹配确切文本,虽然这种技术对于对
静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索
动态文本,即使不是不可能,至少也会变得很困难。

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一
个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等

正则表达式可以灵活的匹配到 通用字符,它一般用在测试密码框,账号框等输入框中的字符是否匹配。

3. 语法

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字
模式

1.普通字符

普通字符包括大写和小写字母所有数字、所有标点符号以及非打印字符和一些其他符号。

非打印字符

正则表达式概念以及语法的使用,正则表达式

 

2. 特殊字符

特殊字符就是一些有特殊含义的字符,如下

正则表达式概念以及语法的使用,正则表达式

 

3. 限定符

+ 号代表前面的字符必须至少出现一次(1 次或多次)

sjp+,可以匹配 sjp、sjpp、sjppp等,

* 号代表前面的字符可以不出现,也可以出现一次或者多次

sjp*,可以匹配sj、sjp、sjpp 等,(0 次、或 1 次、或多次) 

? 问号代表前面的字符最多只可以出现一次(0 次、或 1 次)  

sjp? 只能 匹配 sj 或者 sjp 

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

例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o

{n,},n 是一个非负整数。至少匹配 n 次

 o{2,}' 不能匹配 "Bob" 中的 'o'但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于'o+'。'o{0,}' 则等价于 'o*'。

{n,m},m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次 

最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配"fooooood" 中的前三个 o

 

4. 定位符

正则表达式概念以及语法的使用,正则表达式

注意:不能将限定符与定位符一起使用。由于在紧靠换行或者单词边界的前面或后面不能有
一个以上位置,因此不允许诸如 ^* 之类的表达式 

5. 运算优先级

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。
相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各
种正则表达式运算符的优先级顺序:

正则表达式概念以及语法的使用,正则表达式

 

3.匹配规则

1. 基本模式匹配

模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。

  • ^ 符号用来匹配那些以给定模式开头的字符串
^once
/*
这个模式 包含一个特殊的字符^,表示该模式只匹配那些以 once 开头的字符串。
例如 该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"
不匹配。正如如^符号表示开头一样.
*/
  • $符号用来匹配那些以给定模式结尾的字符串
bucket$
/*
这个模式与"Who kept all of this cash in a bucket"匹配,与"buckets"不匹配。字符 ^ 和 $ 同
时使用时,表示精确匹配(字符串与模式一样)
*/
^bucket$
/*
这个模式只匹配字符串"bucket"
*/

如果一个模式不包括^和$,那么它与任何包含该模式的字符串匹配。
例如:

模式:once

字符串:There once was a man from NewYork,Who kept all of his cash in a bucket.  匹配

2. 字符簇

正则表达式通常用来验证用户的输入。当用户提交一个 表单以后,要判断输入的电话号码、地址、EMAIL 地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。 所以就需要用字符簇来表示。

要建立一个表示所有元音字符的字符簇,就把所有的元音字符放在一个方括号里

[AaEeIiOoUu]

这个模式与任何元音字符匹配,但只能表示一个字符,用连字号可以表示一个字符的范围:

[a-z] //匹配所有的小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的字母
[0-9] //匹配所有的数字
[0-9\.\-] //匹配所有的数字,句号和减号
[ \f\r\t\n] //匹配所有的白字符

这些也只表示一个字符。如果要匹配一个由一个小写字母和一位数字组成的字符串

比如"z2"、"t6"或"g7",但不是"ab2"、"r2d3" 或"b52"的话,用这个
模式:

^[a-z][0-9]$

尽管[a-z]代表 26 个字母的范围,但在这里它只能与第一个字符是小写字母的字符串匹配。

上面提到^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用 ^ 时,
它表示"非"或"排除"的意思
,常常用来剔除某个字符 :

还用前面的例子,我们要求第一个字符不能是数字:

^[^0-9][0-9]$

这个模式与"&5"、"g7"及"-2"是匹配的,但与 "12"、"66" 是不匹配的。下面是几个排除特定字
符的例子:

[^a-z] //除了小写字母以外的所有字符

3. 确定重复出现

如果一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数

如下:

^a{4}$  // aaaa
^a{2,4}$  //aa aaa aaaa
^a{2,}$  // aa ,aaa aaa等多个a
^a{2,}  //aardvark 和 aaab可以, apple不行
a{2,}  //baad aaaa可以,但Nantucket不行 
.{2}   //匹配所有的两个字符
\t{2}  //两个字表符

更多的单词和数字的匹配:

^[a-zA-Z0-9_]{1,}$ // 所有包含一个以上的字母、数字或下划线的字符串
^[1-9][0-9]{0,}$ // 所有的正整数
  • [1-9] 表示 可以从中 1-9选中一个字符
  • [0-9]{0,} 表示可以从0~9中选择任意个字符。
^\-{0,1}[0-9]{1,}$ //所有整数

\-{0,1}:表示可以匹配0个或者1个 " -" 符号

[0-9]{1,}:表示可以匹配1个以上的 0-9数字文章来源地址https://www.toymoban.com/news/detail-566473.html

^\-?[0-9]{1,}\.?[0-9]{1,}$ //所有的浮点数

到了这里,关于正则表达式概念以及语法的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式的常见语法

           目录 一、基本的正则表达式语法 1.1 字符类 1.2 单个字符的特殊表示 1.3 量词表示  1.4 边界匹配 1.5 分组与捕获  二 、java中的使用   在Java中使用正则表达式进行字符串匹配可以说是一个很重要的技能,尤其对于需要进行文本处理或者字符替换的程序来说,更是必

    2024年04月28日
    浏览(51)
  • sed中使用正则表达式进行替换以及注意事项

    sed中使用正则表达式进行替换的时候,一定要注意,有些特殊字符在使用时要转义,目前发现的有: 用于分组的小括号:(),在使用时要用进行转义,但是匹配字符串中真正的小括号时,无需转义; 表示前面的表达式出现次数的{},也要转义; 表示前面的表达式出现1次或多

    2023年04月22日
    浏览(44)
  • Java 正则表达式【基本语法】

    首先我们需要了解的是正则表达式中的各种元字符的功能,主要分为以下几种: 限定符 选择匹配符 分组组合和反向引用符 特殊字符 字符匹配符 定位符 需要注意的是:在 Java正则表达式中,两个斜杠 \\\\ 相当于其它语言中的一个斜杠 。 符号 含义 示例 解释 [ ] 可以匹配的字

    2024年02月13日
    浏览(54)
  • javaScript基础语法之正则表达式

    表达式 描述 [0-9] 查找任何从 0 至 9 的数字。例如,匹配: \\\'111\\\' ,不匹配:\\\'eee\\\' [abc] 查找方括号之间的任何字符。例如,/[123]/ 匹配 \\\"1234567\\\" 中的 \\\"123\\\",\\\"1\\\" 中的 \\\"1\\\"。但是不匹配 \\\"4567890\\\"。 [^abc] 查找任何不在方括号之间的字符。例如,/[^123]/ 匹配 \\\"4567890\\\" 中的 \\\"4567890\\\"。但是不匹

    2024年02月09日
    浏览(51)
  • Python高级语法与正则表达式

    Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。 生成器推导式 与列表推导式类似,只不过生成器推导式使用小括号 。 next 函数获取生成器中的下一个值 for  循环遍历生成器中的每

    2024年02月04日
    浏览(46)
  • 【JavaScript_2】语法、标准库、正则表达式

    1、强制转换 使用Number函数,可以将任意类型的值转化成数值。 Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。 上面代码中,parseInt逐个解析字符,而Number函数整体转换字符串的类型。 另外,parseI

    2024年02月13日
    浏览(58)
  • 【Golang】Perl 正则表达式语法的支持示例

    在 Golang 中,标准库的正则表达式包 regexp 是基于 RE2 语法的,并不直接支持 Perl 正则表达式的全部功能。虽然 Golang 的标准库并不直接提供对 Perl 正则表达式的支持,但是您可以使用第三方库来实现与 Perl 兼容的正则表达式功能。 一个常用的第三方库是 github.com/dlclark/regexp2

    2024年01月17日
    浏览(59)
  • 【23JavaScript 正则表达式】深入解析JavaScript正则表达式:基础概念、常用方法和实例详解,轻松掌握强大的文本模式匹配工具

    正则表达式是一种强大的文本模式匹配工具,用于在字符串中搜索和操作特定的文本模式。在JavaScript中,正则表达式提供了一种灵活的方式来处理字符串操作。 在JavaScript中,可以通过使用字面量表示法或RegExp对象来创建正则表达式。 字面量表示法 RegExp对象 JavaScript中的正则

    2024年02月08日
    浏览(64)
  • 正则表达式-分组括号以及捕获分组

    在java正则表达式中,( )是分组的意思,每组都有一个组号 只看左括号,不看右括号,按照左括号的顺序,从左往右,依次为第一组,第二组,第三组等等,如图: 根据左括号分成了三组 捕获分组,非捕获分组 可以获取某一组中的内容反复使用 规则: 正则表达式内部使

    2024年01月22日
    浏览(102)
  • Java-初识正则表达式 以及 练习

    目录 什么是正则表达式? 1. 正则表达式---字符类(一个大括号匹配一个字符): 2. 正则表达式---预字符类(也是匹配一个字符): 正则表达式---数量词 (可以匹配多个字符): 正则表达式的练习 1: 习题一: 习题二: 习题三: 正则表达式的练习 2: 习题一: 习题二:

    2024年01月19日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包