手机版

Java和python正则表达式的详细说明

时间:2021-09-01 来源:互联网 编辑:宝哥软件园 浏览:

正则表达式语法和常用元字符;

正则表达式由元字符和不同的组合组成。通过巧妙地构造正则表达式,可以匹配任意字符串,完成复杂的字符串处理任务。

常用的元字符有:

使用反斜杠时,应该注意,如果以“\”开头的元字符与转义字符相同,则需要使用“\ \”或原始字符串,并在字符串前面加上字符“r”或“r”。原始字符串可以减少用户的输入,主要用于' \ \ '、正则表达式和文件路径字符串。如果字符串以“\”结尾,则需要添加一个斜杠以“\ \”结尾。

将下一个字符标记为特殊字符、文字字符、向后引用或八进制转义字符。例如,“n”与字符“n”匹配。“n”匹配新的行字符。序列“\ \”匹配“\”和“\”(“匹配“(”)。

正则表达式的常用写法:

[a-za-z0-9]':匹配字母或数字'[abc]':匹配除abc以外的字母' p (ython | erl)'匹配Python和perl '(模式)* '匹配0次或更多次'(模式)'匹配1次或更多次'(模式){m,N} '匹配m_n次'(A | B) * C '匹配0-n次A或B后跟C' [A-ZA-Z] {1} ([A-ZA-Z0-9 \。_]) {4,19} $“匹配20个以字母开头的字符”。3}$ '匹配的IP' [a-za-z] $ '仅包含英文字母' \[电子邮件保护] (\ w \。)\ w $ '匹配邮箱'[\ u4e00-\ u9fa5]'匹配汉字' \ d {18 | \。=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[,_]).{8,}$)'判断是否强密码'(。)\ \ 1 '匹配任意字符的一个或多个匹配项

re模块常用方法介绍;

Compile(pattern[,flags])创建一个模式对象搜索(pattern,string [,flags])来查找整个字符中的模式,并返回一个匹配对象或无匹配(pattern,string[,flags])位于从字符串开始的匹配模式中。返回匹配对象findall(pattern,string [,flags]):列出匹配模式Split (pattern,string[,maxsplit=0])中的所有匹配项根据匹配模式划分字符串sub(pat,repl,string[,count=0]),并将字符串中所有pat匹配项替换为repl以转义(string)以转义字符中的所有特殊正则表达式字符

匹配、搜索、查找所有差异

匹配在字符串的开头或指定位置搜索,模式必须出现在开头或指定位置;搜索方法搜索整个字符串或指定位置;Findall在字符串中查找所有匹配正则表达式的字符串,并在列表中返回它们。

子模式和匹配对象

正则表达式中的Match和search方法匹配成功后会返回match对象,其中match对象的主要方法有group()(返回一个或多个匹配的子模式内容)、groups()(返回一个匹配所有子模式内容的元组)、groupdict()(返回一个匹配所有子模式内容的字典)、Start()(返回子模式内容的开始位置)、end()(返回子模式内容的结束位置)span()(返回包含指定子模式内容的开始位置和结束位置之前的位置的元组)

代码演示

import re m=re.match(r'(\w ) (\w '),'艾萨克牛顿,物理学家')m.group(0)'艾萨克牛顿' m.group(1)'艾萨克' m.group(2)'牛顿' m.group(1,2)('艾萨克','牛顿')m=re.match(r '(?Pfirst_name\w()?Plast_name\w)'、'马尔科姆雷诺兹')m . group(' first _ name ')' Malcolm ' m . group(' last _ name ')' Reynolds ' m . groups()(' Malcolm ',Reynolds ')m . group dict(){ ' first _ name ' : ' Malcolm ',' last _ name' :' Reynolds'}验证并理解子模式扩展语法的功能

导入re exampleString=' ' '应该有一种(最好只有一种)显而易见的方法。虽然这种方式一开始可能并不明显,除非你是荷兰人。现在总比没有好。虽然从来没有比现在更好的了“”模式=re.compile(r '(?=\w\s)从不(?=\ s \ w)')匹配结果=模式。搜索(示例字符串)匹配结果。span()(171,176)模式=re.compile(r '(?=\ w \ s)从不)匹配结果=模式。搜索(示例字符串)匹配结果。span()(154,159)模式=re.compile(r '(?更好(\ sthan)')匹配结果=模式。搜索(示例字符串)匹配结果。span()(139,153) matchResult.group(0)比matchResult.group(1)比pattern=re.compile(r'\b(?I)n \ w \ b’)索引=0,而true :匹配结果=模式。搜索(例如字符串、索引)如果不是匹配结果:中断打印(匹配结果。组(0),' : ',matchResult.span(0))索引=matchResult.end(0)不是: (90,93)现在: (135,138)永不3:(154,159)永不3:(171,138)!不是b ')索引=0,而true :匹配结果=模式。搜索(例如字符串、索引)如果不是匹配结果:中断打印(匹配结果。组(0),' : ',matchResult.span(0))索引=matchResult.end(0)be : (13,15)示例字符串[13:20]' be one-' pattern=re。编译(r '(\ b \ w *?Pf\w)(?p=f)\ w * \ b’)索引=0,而True :匹配结果=模式。搜索(例如字符串、索引)如果不是匹配结果:中断打印(匹配结果。group(0),' : ',matchResult.group(2))索引=匹配结果。end(0)1除非:s better :t s=' aabc ABCD ABCD ' ABCD ' p=re。编译(r '(\ b \ wPf\w)(?p=f)\ w * \ b ')p .查找所有[(' aabc ',' a '),(' ABCD ',' b '),(' ABCD ',' c ',(' ABCD ',' b '),(' ABCD ',' d')]以上就是关于大蟒正则表达式的相关内容,更多资料请查看我们以前的文章。

版权声明:Java和python正则表达式的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。