正则表达式的基础说明与介绍

本文介绍了正则表达式,它是对字符串操作的逻辑公式,用于验证、搜索和替换。阐述了其纯文本和代码语法两种形式,包括单个匹配和重复元字符的使用。还分别说明了在C#和JavaScript中的写法与常用方法,如C#的测试、匹配、替换等,JS的定义方式和测试、检索方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式通常被用来检索,替换那些符合某个模式的文本,许多程序设计语言都支持利用正则表达式进行字符串的操作,但是写法和支持程度上有所不同。
概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑,主要用来验证、搜索和替换,验证和搜索用到较多(摘抄)。
正则表达式有两种形式一是纯文本 二是代码语法:
纯文本的介绍:纯文本看起来可能不像是个正则表达式,但它的确是。正则表达式可以包含纯文本甚至可以只包含纯文本。但完全是纯文本的使用就没什么意思了,而且编写代码更加的繁多,但把它作为学习正则表达式的起点还是不错的。 使用例子:
在这里插入图片描述
也就是等于把要匹配的字符串复制一遍。
代码语法:一个代码定义好的一种语法。
单个匹配的介绍:匹配一个位置的字符,主要为一些元字符的使用
.(点):匹配除换行符以外的任意字符: 例
在这里插入图片描述
换行符是Windows 以各种操作文本的时候用来表示换行的一种符号,Windows里面换行符是\r\n, 其它系统要么是\r 要么是\n.
\w:匹配字母或数字、下划线的字符。
\s:匹配任意的空白符、包括空格、制表符等等。
\d:匹配数字
\b:匹配单词的开始或结束
[xyz]:字符集合,匹配所包含的任意一个字符
中间4个 它们的换大写字母后就是和小写的意思刚刚相反 如:
\W:匹配不是字母或者数字、下划线的字符
^:非,除了 比如 [^a] :除了a以为的任意字母。
几个重复元字符的正则表达式样式
*:重复零次或更多次,等价于[ 0,],+:重复一次或更多次,等价于{1,} ?:{ 重复零次或一次,等价于{0,1}} {n} :重复n次
正则表达式默认是贪婪型的,通常的行为是匹配尽可能多的字符, 我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的重复元字符都可以被转化为懒惰匹配模式,只要在它后面加 上一个问号 ?
在 c#中的使用和写法
在c#中使用时我们主要引用System.Text.RegularExpressions这个类;常用的方法有4个:
第一个测试:测试该字符串是否满足规则,有3个参数,第一个参数是被测试的字符串,第二个参数就是正则表达式 ,第三个参数就是正则表达式的选项或者叫模式。一般是用两个参数,第三个参数很少情况下用到。比如当第二个参数为[a-z],第三个参数给个RegexOptions.IgnoreCase忽略大小写,第二个参数原本的意思是匹配a-z之间的字母区分大小写的,加上该参数后就忽略大小写了,但是直接加上大写A-Z不是更加方便一点。但有时也是必须要用到它,比如:当写的正则表达式是多行的,那我们必须要用到RegexOptions的参数Multiline多行匹配,因为如果不用的话,正则是一行一行匹配的,这会使原本的意思发生改变。代码样式:
在这里插入图片描述
第二个方法是匹配出第一个结果:也就是它不管匹配到多个选项,只管返回第一个选项
在这里插入图片描述
写法和第一种一样,不过第二种就是匹配第一条数据返回的结果。
Match有几个参数,第一个是Empty(空),也就是有时候没有匹配到。
第二个参数Groups(分组),第三个是Synchronized,返回一个与提供的实列等效的System.Text.RegularExpressions.Regex 实列 。
第三 参数NextMatch(下一个匹配),
还有一个常用的参数Success (是否成功),可以用这个参数来试一下是否匹配成功,一般的写法:
在这里插入图片描述
Value就是我们匹配成功的结果,一般是先用Success判断字符串是否匹配成功,然后再拿出成功的结果来,不然Value可能为空都不知道。
第三个方法:匹配出所有的结果,其实就是一个Match的集合,把多个Match放一起
在这里插入图片描述
这里的Match是以复数的形式写的,匹配的方法和前面相同。
第4个方法:替换:它匹配的参数就要多一个了,多一个替换的字符串,也就是把匹配的字符串替换成这个。
在c#中掌握这4个就差不多了
在 JavaScript的写法:
JavaScript有两种定义方式,第一种就是以/(斜杠)开始以/(斜杠)结尾,然后在中间放正则表达式,当然我们还要第一一个变量来装它 比如: var fast = /1/ ; fast就是我们定义的变量,而2就是正则表达式。在然后就是在斜杠后面放igm(模式),
g: 表示全局(global)模式,表示pattern会应用于所有字符串,而不是找到一个匹配项后立即停止。
i :表示不区分大小写(ignore)模式。即忽略pattern和字符串的大小写。
m:表示多行(multiple)模式。 即到一行文本末尾时还会继续查找下一行中是否存在匹配的项
这些都是根据实际情况使用,一般是g用的比较多。
第二种就是 new RegExp(类)后面接两个类 ,一个是正则表达式 一个是模式igm 列如:
var fast = new RegExp(“3”, “i”);
它只有2种方法:
第一个就是测试: 用来测试字符串是否匹配 写法:console.log(fast.test(str)); fast就是我们定义的变量 用来装正则表达式的,test就是测试,然后 str就是传入的字符串,因为str是封装字符串的变量。如果匹配就返回true,否则返回false.
第二个就是检索exec()字符串,从中得到与正则表达式匹配的文本,写法:console.log(fast . exec(str)); 如果找到匹配的文本就是返回一个结果数组 ,否则返回null。这是匹配一个结果就返回结果的,如果需要匹配多个结果就需要在最后循环一下:
如匹配多个结果的例子-匹配的纯文本:

在这里插入图片描述


  1. a-z ↩︎

  2. a-z ↩︎

  3. a-z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值