2022
我们一起努力

正则表达式,正则表达式在线生成

目录:

  • 1、什么是正则表达式
  • 2、正则表达式大全
  • 3、正则表达式(Regular Expressions)
  • 4、正则表达式是什么?该怎么用?
  • 5、正则表达式名词解释
  • 6、正则表达式

什么是正则表达式

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

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

概念

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

简介

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

正则表达式大全

一、校验数字的表达式

1. 数字:^[0-9]*$

2. n位的数字:^\d{n}$

3. 至少n位的数字:^\d{n,}$

4. m-n位的数字:^\d{m,n}$

5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

1. 汉字:^[\u4e00-\u9fa5]{0,}$

2. 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3. 长度为3-20的所有字符:^.{3,20}$

4. 由26个英文字母组成的字符串:^[A-Za-z]+$

5. 由26个大写英文字母组成的字符串:^[A-Z]+$

6. 由26个小写英文字母组成的字符串:^[a-z]+$

7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11. 可以输入含有^%',;=?$\"等字符:[^%',;=?$\x22]+ 12 禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式

1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%=]*)?$

4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15. 钱的输入格式:

16. 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$

17. 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

18. 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

19. 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

20. 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$

21. 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

22. 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

24. 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

25. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26. 中文字符的正则表达式:[\u4e00-\u9fa5]

27. 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

28. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

29. HTML标记的正则表达式:(\S*?)[^]*.*?/\1|.*? / (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

30. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

31. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

32. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

33. IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)

34. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

原文:

正则表达式(Regular Expressions)

正则表达式(Regular expressions) 有两个用处:

在Python中通过re模块引用正则表达式。

当你定义了一个正则表达式,可以用re.match功能辨别字符是否匹配。

为了避免字符上的混淆,我们可以用 r"expression" 来表示字符串。

例如:

另外一个匹配功能是 re.search 和 re.findall.

re.search 在一组字符串的 任意位置 找到匹配项。

re.findall 将 所有 匹配字符返回到 一个列表 。

例如:

结果:

正则搜索有以下几种methods:

例如:

结果:

另外在re模块中还有个特别重要的正则式:sub。

语法规则:

re.sub(pattern, repl, string, max=0)

这个方法将在string处查找pattern中的字符,然后替换为repl的字符,最后返回修改后的语句。

例如:

结果:

元字符使得正则表达式比一般字符方法更加强大。

第一个元字符是 .(原点) 。

他的作用是匹配任何一个单字字符(除了换行符号)。

例如:

接下来两个元字符是 ^ 和 $ ,作用分别是匹配一个字符的 开始 和 结束 。

例如:

字符类提供了一个匹配一组特定字符中唯一字符的方法。

用中括号来创建一组字符类。

例如

字符类也能匹配字符域,比如:

[a-z]匹配所有小写字符。

[G-P]匹配所有大写字符。

[0-9]匹配所有数字。

多个域可以合到一个类里。比如[A-Za-z]可以匹配26个字母中任意一个。

^放置于字符类的开头,用于反置,即匹配除字符类之外的字符。

更多的元字符包括:

***** 表示0或更多次重复。

例如:

+ 类似于*,表示1或更多次重复。

例如:

? 表示重复1或0次。

例如:

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

正则表达式,又称规则表达式。(英语: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,}$"。

正则表达式名词解释

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

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

正则表达式

main role="main" class="App-main" style="padding-bottom: 46px;"

首发于 Python办公自动化

无障碍 写文章

登录

article class="Post-Main Post-NormalMain" tabindex="-1" style="box-sizing: border-box; outline: none;"

header class="Post-Header" style="margin: 0px auto; width: 690px;"

第一小乔乔

进一步,是一步。一起工作进步,厨艺精进,生活美满。

22 人赞同了该文章

/header

[图片上传失败...(image-f7fc00-1650193970962)]

match()和search()都只匹配出一个符合条件的字符串,若想要所有,可以使用re.findall()

# 用[]{}判断密码是否符合要求 :密码是由数字和字母组成,并且位数是6-16位

##用split按-或者空白格分割字段

结果:['ahsb1sssa8', 'jjhd7nhs', '90nsjhf3', '4hh', 'h7', '8kjj', 'sfav']

#用sub替换符合条件的关键词, 试试马赛克脏话(想起农药不能痛骂队友的愤怒)

##练练转义

## findall返回符合表达式的子串

一、正则表达式语法

正则表达式是用匹配或者描述字符串的工具。

用处:

a.判断字符串是否满足某个条件---判断输入的字符串是否是邮箱/手机号码。是否是ip地址

b.提取满足条件的字符串

c.字符串替换

Python中通过re模块中相应的方法来支持正则表达式的匹配、查找和替换等功能

fullmatch(正则表达式字符串, 字符串) --- 判断正则表达式和字符串是否完全匹配

正则表达式字符串: 就是一个字符串,字符串中是正则表达式语法。r'正则表达式'

正则表达式中包含两个部分,一个是正则语法对应的字符,二个是普通字符

1 .(点)(匹配任意字符)

一个.只匹配一个任意字符

2 \w(匹配字母数字下划线)

一个\w匹配一个字符

3 \s(匹配任意空白字符)

空白字符: 空格、制表符(\t)、回车(换行\n)等,都输入空白字符

一个\s匹配一个空白字符

4 \d(匹配数字字符)

一个\b不会去匹配一个字符,而是单纯的检测\b出现的位置是否是单词边界

单词边界: 字符串开始和结尾、空格、换行、标点符号等,可以将两个单词隔开的字符都单词边界

6 ^(检测是否是字符串开头)

re_str = r'^\d\d\d' # 判断一个字符串是否是三个数字开头

7 $(检测是否是字符串结尾)

8 \W(匹配非字母、数字下划线)

9 \S(匹配非空白字符)

10 \D(匹配非数字字符)

11 \B(检测是否不是单词边界)

12 [] (匹配中括号中出现的任意一个字符)

一个[]匹配一个字符

[字符集] -- 匹配一个字符,这字符是字符集中的任意一个字符

例如:[abc], [\d+]

[字符1-字符2] -- 匹配一个字符,这个字符是Unicode编码值在字符1到字符2中的任意一个字符;要求字符1的编码值要小于字符2

例如:[1-9] -- 数字1到9 [a-z] -- 小写字母 [A-Z] -- 大写字母

[\u0031-\u0039] -- 数字1到9

[\u4E00-\u9fa5] -- 匹配所有的汉字

注意:-在中括号中,如果放在两个字符之间表示范围。

13 [^字符集] (匹配一个不在字符集中的任意字符)

注意:^必须放在中括号中的最前面才有效

二、正则表达式次数相关符号

from re import fullmatch

1. *(匹配0次或者多次)

字符* -- 字符出现0次或者多次

2. +(匹配一次或者多次)

3. ?(匹配0次或者1一次)

练习:写一个正则表达式,匹配所有的整数(123, -2334, +9...可以匹配的,012, -023,+0122不能匹配)

{N} -- 匹配N次

{M,N} -- 匹配M到N次

{M,} -- 至少匹配M次

{,N} -- 最多匹配N次

三、分之和分组

import re

1. |(分之)

条件1|条件2 -- 先用条件1去匹配,如果匹配成功就匹配成功。如果条件1匹配失败,用条件2去匹配。

注意:如果条件1匹配成功就不会用条件2再去匹配

能匹配成功时abc,d和aaa

'abc'+W/H/Y

2. ()(分组)

a.组合(将括号中的内容作为一个整体进行操作)

b.捕获 -- 使用带括号的正则表达式匹配成功后,只获取括号中的内容

c.重复 -- 在正则表达式中可以通过\数字来重复前面()中匹配到的结果。数字代表前第几个分组

a.组合

匹配一个字符串,以数字字母的组合出现3次

b.捕获

c.重复

3.转义符号

正则表达式中可以通过在特殊的符号前加\,来让特殊的符号没有意义

. -- 任意字符 . -- 字符.

注意:在中括号有特殊功能的符号,只代表符号本身

\不管在哪儿都需要转义

-在[]外面没有特殊功能,在[]中要表示-本身,就不要放在两个字符之间

()需要转义

四、re模块中的函数

import re

1. compile

compile(正则表达式字符串) -- 将正则表达式字符串转换成正则表达式对象

2. fullmatch和match

fullmatch(正则表达式字符串, 字符串)

-- 用正则表达式去完全匹配字符串(匹配整个字符串),返回匹配对象(SRE_Match)或者None

match(正则表达式字符串, 字符串)

-- 匹配字符串开头,返回匹配对象或者None

1.span(group=0) -- 获取匹配成功的区间(左闭右开区间)

print(result.span(0))

print(result.start(1)) # 获取匹配到的开始下标

print(result.end(1)) # 获取匹配到的结束下标后的下标

2.group(group = 0) -- 获取匹配结果

group()/group(0) -- 获取正则表达式完全匹配的结果

group(index0) -- 获取正则表达式中第group个分组匹配到的结果

3.string -- 获取被匹配的原字符串

3.search

search(正则表达式, 字符串)

-- 查找字符串中满足正则表达式的第一个字符串。返回值是匹配对象或者None

练习:使用search匹配出一个字符串中所有的数字字符串'abc34jshd8923jkshd9lkkk890k' -- 34,8923,9,890

4.findall

findall(正则表达式, 字符串) -- 获取字符串中满足正则表达式的所有的子串,返回一个列表

注意:如果正在表达式中有分组,取值的时候只取分组中匹配到的结果;

如果有多个分组,会将每个分组匹配到的结果作为一个元祖的元素

5.finditer

finditer(正则表达式, 字符串)

-- 查找所有满足正则条件的子串,返回值是迭代器,迭代器中的元素是匹配对象

6. split

split(正则表达式,字符串) -- 将字符串按照满足正则表达式条件的子串进行分割

"""

str1 = 'ahsb1sssa8-jjhd7nhs+90nsjhf3-4hhh7+8kjj-'

result = re.split(r'[-+]', str1)

print(result)

7.sub

sub(正则表达式,repl,字符串) -- 将字符串中满足正则表达式条件的子串替换成repl。返回替换后的字符串

作业

1. 写一个正则表达式判断一个字符串是否是ip地址

规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255 例如:255.189.10.37 正确 256.189.89.9 错误

2. 计算一个字符串中所有的数字的和

例如:字符串是:‘hello90abc 78sjh12.5’ 结果是90+78+12.5 = 180.5

3. 验证输入的内容只能是汉字

4. 电话号码的验证

二、不定项选择题

编辑于 2020-12-21 17:02

Python

正则表达式

赞同 22

3 条评论

分享

/article

[图片上传失败...(image-b1d3-1650193970960)]

懒人必备

[[图片上传失败...(image-645a0f-1650193970961)]

裸睡的猪发表于猪哥的Py...]( )

[# 【Python】正则表达式基础知识

正则表达式(regular expression)是一种处理字符串的工具,功能十分强大。正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理,可以快速,准确地完成复杂…

长弓瑾瑜]( )

[[图片上传失败...(image-c617e9-1650193970961)]

123456]( )

[# Python之正则表达式入门

前言:此文实际上是本人在慕课学习北京理工大学课程:Python网络爬虫与信息提取 一课所做的一部分笔记,是作为初学者的入门笔记,自然有许多遗漏或者疏忽,欢迎大家指出。一、正则表达式基…

热水]( )

切换为时间排序

写下你的评论...

label class="UploadPicture-wrapper" style="cursor: pointer;"/label

发布

/main

label class="Editable-languageSuggestionsInput Input-wrapper" style="position: relative; display: flex; -webkit-box-align: center; align-items: center; width: 180px; height: 34px; padding: 4px 10px; font-size: 14px; background: rgb(255, 255, 255); border: 1px solid rgb(235, 235, 235); border-radius: 3px; box-sizing: border-box; transition: background 0.2s ease 0s, border 0.2s ease 0s; cursor: pointer;"input autocomplete="off" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-activedescendant="AutoComplete17-0" id="Popover16-toggle" aria-haspopup="true" aria-owns="Popover16-content" class="Input" placeholder="选择语言" value="" style="-webkit-box-flex: 1; flex: 1 1 0%; padding: 0px; overflow: hidden; font-family: inherit; font-size: inherit; font-weight: inherit; background: transparent; border: none; resize: none; color: rgb(18, 18, 18); height: 24px; line-height: 24px; cursor: inherit;"/label

赞(0)
文章名称:《正则表达式,正则表达式在线生成》
文章链接:https://www.fzvps.com/175164.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!