您现在的位置是:首页» windows系统» 正则表达式去除特殊字符,正则表达式有哪些限定字符

正则表达式去除特殊字符,正则表达式有哪些限定字符

2024-07-13 14:44:48
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。一、常用修饰符修饰符含义描述i忽略 - 不区分大小写匹配设置为不区分的字体,在搜索时不区分的字体: A 和 a 不区分。g全

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

一、常用修饰符

修饰符 含义 描述
i 忽略 - 不区分大小写 匹配设置为不区分的字体,在搜索时不区分的字体: A 和 a 不区分。
g 全球-全球匹配 查找所有的匹配项。
m multi line - 多行匹配 使边界字符 ^ 和 $ 匹配每个行的开始和结束,记住它是多行,而不是整个字符串的开始和结束。
s 特殊字符圈. 包括替换n 默认情况下的圆点 . 是匹配除换行符 n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 n。

g修饰符

g变换器可以搜索字符串中的所有匹配:

结果:

i修饰符

i 变换器匹配不区分的大小写,例如:

运行结果如下:

m 修饰符

m修改器可以使 ^ 和 $ 匹配文本中的每个行的开始和结束。

g只匹配第一个行,并添加m来实现多个行。

代码:

运行结果:

s修饰符

s修饰符默认情况下的圆点.是 匹配除换行符 n 之外的任何字符,加上 s 之后,.中包含换行符 n。

代码如下:

运行结果:

二、元字符

下面的表包含元字符的完整列表及其在常规表达式上下文中的行为:

字符 描述

将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,“n”匹配“n”字符。'n'匹配替换行。序列 '\" 匹配 "" 和 "(" 匹配 "(").

^

匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。

$

匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。

*

匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

+

匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

?

例如,"do(es)?Can I match "do" or "does"?It is equal to {0,1}.

{n}

n是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,}

n是一个非负整数。至少匹配n 次。例如,'o{2,}'不能匹配'o'在"Bob",但在"food"中都能匹配。'o{1,}'等于'o+'。'o{0,}'等于'o*'。

{n,m}

m和n是非负整数,其中n <= m。至少有n匹配和最多有m匹配。例如,"o{1,3}"将匹配"food"中的头三个o。'o{0,1}'等于'o?'。请注意,一个逗号和两个数字之间没有空间。

?

当字符遵循其他约束时 (*, +,?, {n}, {n,}, {n,m})之后,匹配的模式并不贪婪。非贪婪模式匹配尽可能少的字符串,默认贪婪模式匹配尽可能多的字符串.例如,对于“oo”字符串,'o+?匹配一个单个“o”,“o+”匹配所有“o”。

.

匹配除换行符(n、r)之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用像"(.|n)"的模式。

(pattern)

匹配模式,得到这个匹配。所取得的匹配可以从结果匹配集合中得到,在VBScript 中使用 SubMatches 集合,在JScript中, $0..$9属性被使用。要匹配圆括号字符,请使用'('或')'。

(?:pattern)

匹配的模式但没有匹配的结果,这意味着这是没有达到的匹配,不用于以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

(?=pattern)

正向肯定预查(look ahead positive assert),在任何匹配模式字符串的开始处匹配搜索字符串。这是一场不获得比赛,也就是说,该匹配不需要为以后使用取得。例如,"Windows(?=95|98|NT|200)“Windows”在“Windows200”中可以匹配,但它不匹配Windows 3.“Windows 1”。预查不消耗字符,也就是说,在一个匹配发生后,在最近的匹配开始下一个匹配的搜索后立即,而不是从包含预览的字符开始.

(?!pattern)

正向否定预查(negative assert),在任何不匹配模式的字符串开始时匹配搜索字符串。这是一场不获得比赛,也就是说,该匹配不需要为以后使用取得。例如,Windows。!95|98|NT|200)"可以匹配"Windows 3."Windows"在"1",然而,它不能与“Windows”在“Windows 200”匹配。预查不消耗字符,也就是说,在一个匹配发生后,在最近的匹配开始下一个匹配的搜索后立即,而不是从包含预览的字符开始.

(?<=pattern) 反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。
x|y

匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

[xyz]

字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^xyz]

负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

[a-z]

字段范围:匹配指定字段中的任何字段。例如,'[a-z]'可以匹配'a'到'z'范围内的任何小写字段。

[^a-z]

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

b

匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

B

匹配非单边界。'erB'可以在"verb"中匹配'er',但不能在"never"中匹配'er'。

cx

匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。

d

匹配数字字符.等于[0-9]。

D

匹配非数字字符,相当于[^0-9]。

f

匹配一个替换字符,相当于x0c和cL。

n

匹配一个替换行,相当于x0a和cJ。

r

与返回符号匹配,相当于x0d和cM。

s

匹配任何空白字符,包括空格、表格、页面更改等。 相当于[ fnrtv]。

S

匹配任何非空白字符,相当于[^ fnrtv]。

t

匹配一个制表符。等价于 x09 和 cI。

v

与垂直标记匹配,相当于x0b和cK。

w

匹配字母、数字、子行,等于'[A-Za-z0-9_]'。

W

匹配非字母、数字、子行,等于'[^A-Za-z0-9_]'。

xn

匹配 n,其中,n是一个16位数字的转写值。16位数字转换值必须是确定的两个数字的长度。例如,'x41'与'A'匹配。'x041' 则等价于 'x04' & "1"。ASCII编码可以在常规表达式中使用。

num

匹配 num, 其中 num 是正整数. 参考得到的匹配. 例如,)1' 匹配同一字符的两个连续字符.

n

识别一个八进制符号值或背向引用。如果 n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

nm

识别一个八进制符号值或背向引用。如果在nm之前至少有nm得到的子表达式,然后nm是一个向后引用。如果 nm 至少 有 n 项 收购,则 n 为一个后跟文字 m 的向后引用。如上述条件不满足,如果 n 和 m 等于一个八进制数 (0-7),然后nm匹配八位变换值nm。

nml

如果n是一个八进制数(0-3),m和l是两个八进制数(0-7),则八进制转换值nml匹配。

un

匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。

接下来,我们分析了匹配的邮箱的正常表达式,:

运行结果:

再来一个:

解析:

运行结果:

如果你想了解更多,你必须亲自去做实验。

三、字符簇

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

因此,我们需要的模式的描述方法是使用更自由的模式,即字符串集。 创建一个代表所有母音的字符集,将所有母音放在括号中:

这个模式匹配任何母音字符,但只代表一个字符。 字符的范围可以由字符串表示,例如:

同样的,它们也只代表一个字符,这是很重要的。如果你想匹配一个由小写字母和数字组成的字符串,例如“a2”,“b3”或“d5”,但不是"we2","d3e4"或"w34",用这个模式:

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

前面曾经提到^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用 ^ 时,它表示"非"或"排除"的意思,常常用来剔除某个字符。还用前面的例子,我们要求第一个字符不能是数字:

这个模式与 "#3"、"g4"及"-3" 是匹配的,但与 "23"、"67" 是不匹配的。下面是几个排除特定字符的例子:

特殊字符 .(点,除“新行”外,所有字符都使用在常规表达式中。因此,模型 ^.3$ 匹配任何以3号结束的字符串,并以其他非"新行"字符串开始。模型可以匹配任何字符串,除替换行(n,r)。

PHP的常用表达式包含了一些内置的通用字符串群,如下列出:

字符簇 描述
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16位数均等于[0-9a-fA-F]

四、确定重复出现

到现在为止,你已经知道如何匹配一个字母或一个数字,但更多的情况下,你可能想匹配一个词或一个数组。一个词是由几个字母组成的.数组由几个单位组成.字符后面的括号({})或字符集以确定前面内容的发生数次。

字符簇 描述
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 三个字母中的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aa oraa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含两个以上a的字符串
^a{2,} Aardvark和Aaab,但苹果不是
a{2,} 如:baad和aaa,但Nantucket不行
t{2} 两个制表符
.{2} 所有的两个字符

这些例子描述了花括号的三个不同用途:一个数字 {x} 表示前面的字符或字符集只出现x次;一个数字加上一个逗号 {x,} 表示前面的内容出现x次或以上:

两个由逗号 {x,y} 分开的数字表示,前面的内容至少出现 x 次,但不能超过 y 次:

我们可以把模式扩展到更多的单词或数字:

最后一个例子不太了解,是吗?这样看: 用任意的负值([-] 吗?以(^)开始,后面一个或多个数字([0-9]+),以及一个小数点(.后面一个或多个数字([0-9]+),而背后没有其他东西($)。下面你会找到更简单的方法使用它。

特殊字符 ? 与 {0,1} 是相等的,它们都代表着:0个或1个前面的内容或前面的内容是可选的。所以刚才的例子可以简化为:

特殊字符 * 与 {0,} 是相等的,它们都代表着0 个或多个前面的内容。最后,字符 + 与 {1,} 是相等的,表示1 个或多个前面的内容,所以上面的4个例子可以写成:

当然,这从技术上并不减少常规表达式的复杂性,但它可以使它们更容易阅读。

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com