regularexpression的简单介绍

http://www.itjxue.com  2023-03-07 11:09  来源:未知  点击次数: 

什么是正则表达式

正则表达式,又称规则表达式。是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

扩展资料

正则表达式的作用:

1、匹配

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

String str="abc";

String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。

2、切割

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

String str="zhangsan,lishi,wangwu"。

String reg=",";//表示以逗号作为切割符。

String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。

3、替换

即将字符串中符合规则的字符替换成指定字符,如:

String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。

str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。

参考资料来源:百度百科-正则表达式

正则表达式

regular expression是计算机科学中的一个概念。正则表达式使用单个字符串来描述匹配一系列符合某个句法规则的字符串。

g全文搜索,i忽略大小写,m多行搜索

具有特殊意义的专用字符,用来规定其前导字符

( [ { \ ^ $ | ) ? * + .

不同组合中的元字符有不同的意义,举例

可以使用[]来构建一个简单的类

var reg = /[abc123]/;

创建一个单字符的类,代表这个字符可以是a,可以是b,可以是c,可以是1,...可以是3。

可以使用^来进行取反,

var reg = /[^abc123]/;

代表着这个单字符可以是任何其他的单字符,除了a,b,c,1,2,3之外。

如果要匹配单个字符,让单字符只能取数字的话,可以使用字符类

写成:

var reg = /[0123456789]/;

这么写比较麻烦,所以可以使用范围类,我们可以使用x-y来连接两个字符,表示从x到y的任意字符,是个 闭区间 ,意味着 包含x和y本身 ,这样,我们要匹配单个数字就可以写成:

var reg2 = /[0-9]/;

要匹配所以的单个字母,可以写为

var reg3 = /[a-zA-Z]/;

上面创建了一些类,用来表示数组,字母等。但是这么写也比较麻烦,正则表达式提供了几个常见的预定义类来匹配常见的字符

有了这些预定义类,写一些正则就比较方便了,比如我们希望匹配一个ab+数字+任意字符的字符串,就可以写作:

var reg = /ab\d./;

正则表达式还提供了几个常用的边界匹配字符

^如果不写在[]内的话,不代表取反,代表以xxx开头,例如: var reg = /hello/; 代表以hello开头,相应的也有$表示为以xxx结尾,举例说明:

单词边界

之前写的方法都是一一匹配的,但是如果希望匹配一个连续出现很多次的字符,例如数字的字符串,不需要写成 \d\d\d\d ,我们可以使用量词

使用举例:

上面提到的{n,m},如果出现多次,只要是n-m中的值都满足条件,到底是按照n还是m来匹配。 量词在默认条件下是尽可能多的匹配的,即默认贪婪模式

var reg = /\d{3,5}/g; '123456789'.match(reg); //{"12345","6789"}

与贪婪模式相对的,就有非贪婪模式,即尽可能少的匹配,一旦成功匹配之后不再继续尝试,在后面加上?即可

var reg2 = /\d{3,5}?/g; '123456789'.match(reg); //{"12345","6789"}

上面的量词解决的是单个字符重复多次的问题,如果我们需要匹配重复的多个字符,比如匹配hello出现20次,如果写成hello{20}意味着是hell+o出现20次,o自己重复20次,而不是整个hello重复20次。

我们可以使用分组()来解决这个问题,写成:

/(hello){20}/g;

对于上面的情况,如果我们希望匹配hello或者world出现20次,可以通过使用 | 进行或操作

/(hello|world){20}/g;

举例: good(?=Bayon) 匹配后面有Bayon的good

检测字符串参数中是否存在正则表达式模式,存在返回true不存在返回false

用于正则表达式模式在字符串中运行查找,如果exec()找到了匹配的文本,则返回一个结果数组,否则返回null

除了数组元素和length属性之外,exec()方法返回对象还包括两个属性。

举例说明:

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

search方法不执行全局匹配,它将忽略标志g,同时也忽略正则表达式对象的lastIndex属性,总是返回字符串的第一个匹配的位置

match()方法将检索字符串,以找到一个或者多个与regexp匹配的文本。regexp是否有全局g标志会影响结果。

关于string对象的replace方法,一般可以传入两个字符串,但是只能replace一次,如果把第一个参数传入regexp的话,就可以是replace变得灵活。

经常使用split方法把字符串分割为字符数组

'a,b,c,d'.split(","); // ["a","b","c","d"];

相应的,也可以使用regexp进行切割:

"a1b2c3".split(/\d/); // ["a","b","c","d"]

正则判断规则解析

1、判断首位:^

2、结尾:$

3、任意字符:.

4、长度任意:*

5、任意长度的字符:.*

6、判断一位数字:\\d{1}

7、判断三位数字:\\d{3}

8、判断3-10位数字:\\d{3,10}

9、判断是否包含小写的英文字母:[a-z]

10、判断第一个是字母,第二个是数字:^[a-z][0-9]$

11、判断首位是小写英文字母,后面跟着3-5个数字:^[a-z]\\d{3,5}

12、判断结尾是否是小写英文字母:[a-z]$

13、判断不能是数字:[^0-9]

14、判断首字母不能是数字:^[^0-9]

15、判断不能是小写英文字母:[^a-z]

16、判断首字母不能是数字:^[^a-z]

17、判断5-12位的QQ号码:^[1-9]\\d{4,11}

18、判断11位电话号码:^1[0-9][0-9]\\d{8}$

- (BOOL)checkRegex {

?? ? ? NSString *str = @"134544a2bc4de34";

? ? ? ? NSString*pattern =@"\\d{7,8}";

? ? ? ? NSError*error =nil;

? ? ? ? NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:nil error:error];

? ? ? ? NSArray *matches = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)];

? ? ? ? if(matches matches.count0) {

? ? ? ? ? ? returnYES;

? ? ? ? }

? ? return NO;

}

正则表达式是什么?该怎么用?

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

正则表达式应用——实例应用

验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;

2.验证电话号码:("^(\d{3,4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

3.验证手机号码:"^1[3|4|5|7|8][0-9]{9}$";

4.验证身份证号(15位):"\d{14}[[0-9],0-9xX]",(18位):"\d{17}[[0-9],0-9xX]";

5.验证Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

6.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$");

7.整数或者小数:^[0-9]+([.][0-9]+){0,1}$

8.只能输入数字:"^[0-9]*$"。

9.只能输入n位的数字:"^\d{n}$"。

10.只能输入至少n位的数字:"^\d{n,}$"。

siwave的regularexpression怎么用

一、导入re库

python使用正则表达式要导入re库。

import re

在re库中。正则表达式通常被用来检索查找、替换那些符合某个模式(规则)的文本。

二、使用正则表达式步骤

1、寻找规律;

2、使用正则符号表示规律;

3、提取信息,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

三、正则表达式中常见的基本符号

1.点号“.”

一个点号可以代替除了换行符(\n)以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号。

2.星号“*”

一个星号可以表示它前面的一个子表达式(普通字符、另一个或几个正则表达式符号)0次到无限次。

3.问号“?”

问号表示它前面的子表达式0次或者1次。注意,这里的问号是英文问号。

4.反斜杠“\”

反斜杠在正则表达式里面不能单独使用,甚至在整个Python里都不能单独使用。反斜杠需要和其他的字符配合使用来把特殊符号变成普通符号,把普通符号变成特殊符号。如:“\n”。

5.数字“\d”

正则表达式里面使用“\d”来表示一位数字。再次强调一下,“\d”虽然是由反斜杠和字母d构成的,但是要把“\d”看成一个正则表达式符号整体。

6.小括号“()”

小括号可以把括号里面的内容提取出来。

Robot Framework Regular Expression 正则表达式 处理String

在处理server log的时候,想用一用正则表达式抓抓参数,没想到玩不太转,遇到点坑。找了半天,发现RF使用Regular Expression的中文文档基本没有,除了道长在《Robot Framework 自动化测试修炼宝典》中,稍稍用一下节带过,google 上百度一下,也都是泪。这里就当个插曲,讲讲遇到的小坑,然后稍稍分享下regular expression in RF。

这里盗个版权,道长书里是这样写的:

源码:

自己在使用的时候,发现报错了,欲哭无泪。

Error Log:

之前都是搞Java的,刚开始学python,这个坑就酱跳进去了,参数里面不能有单引号',要不就跟findall('','')里面的这个四个货有冲突,要么转义\,要么删掉'。case 里面的 {log} Replace String {EMPTY}

然后就好了,醉了

目前用到的是正则表达式去抓值,看到还有人用这个去做验证,目前还没有用到,先留着以后用

最后奉上Builtln的文档,里面Evaluate就没提regular,还是道长有灵性。

(责任编辑:IT教学网)

更多

推荐微信营销文章