Python如何使用RegEx模块处理正则表达式?
admin
2023-06-26 11:02:20
0

  Python如何使用RegEx模块处理正则表达式?针对这个问题,今天小编总结这篇有关RegEx模块的文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。

  RegEx或正则表达式是形成搜索模式的字符序列

  RegEx可用于检查字符串是否包含指定的搜索模式

  RegEx模块

  python提供名为 re 的内置包,可用于处理正则表达式。

  导入re模块

  import re

  导入RegEx模块后,就可以使用正则表达式了:

  实例

  检索字符串以查看它是否以“China”开头并以“county”结尾:

  import re

  txt = "China is a great country"

  x = re.search("^China.*country$", txt)

  if(x):

  print("YES! We have a match")

  else:

  print("No match");

  RegEx函数

  re模块提供了一组函数,允许我们检索字符串以进行匹配:

  findall()

  返回包含所有匹配项的列表

  实例:

  打印所有匹配的列表:

  import re

  str = "China is a great country"

  x = re.findall("a", str)

  print(x)

  

Python如何使用RegEx模块处理正则表达式?


  这个列表以被找到的顺序包含匹配项。

  如果未找到匹配项,返回空列表:

  import re

  str = "I want to go to school"

  x = re.findall("KK", str)

  print(x)

  search()

  如果字符串中的任意位置存在匹配,则返回Match对象

  如果有多个匹配,则返回首个匹配项

  search()函数搜索

  import re

  str = "I want to go to school"

  x = re.search("\s", str)#返回字符串包含空白字符的匹配项

  print("The first white-space character is located in position:", x.start())

  

Python如何使用RegEx模块处理正则表达式?


  如果未找到匹配,返回值None:

  import re

  str = "China is a great country"

  x = re.search("English", str)

  print(x)

  finditer()

  和findall类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回

  import re

  str = re.finditer(r"\d+","I18 want15 to13 go15 to school")#\d返回的是数字

  for match in str:

  print(match.group())

  split()

  返回一个列表,其中字符串在每次匹配时被拆分

  实例:在每个空白字符处进行拆分

  import re

  str = "I want to go to school"

  x = re.split("\s", str)

  print(x)

  

Python如何使用RegEx模块处理正则表达式?


  可以通过指定maxsplit参数来控制出现次数:

  实例

  仅在首次出现时拆分字符串:

  import re

  str = "I want to go to school"

  x = re.split("\s", str, 1)

  print(x)

  

Python如何使用RegEx模块处理正则表达式?


  sub()

  re.sub(pattern, repl, string, count=0, flags=0)

  用字符串替换一个或多个匹配项,就是把匹配替换为所选文本

  实例

  用数字8替换每个空白字符

  import re

  str = "I want to go to school"

  x = re.sub("\s", "8", str)

  print(x)

  

Python如何使用RegEx模块处理正则表达式?


  通过count 参数来控制替换次数

  import re

  str = "I want to go to school"

  x = re.sub("\s", "8", str, 2)#只将两个空白符换为8

  print(x)

  Match对象

  Match 对象是包含有关搜索和结果信息的对象

  注释:如果没有匹配,返回值None,而不是Match对象

  import re

  str = "I want to go to school"

  x = re.search("a", str)

  print(x)#打印一个对象

  Match()对象提供了用于取回有关搜索及结果信息的属性和方法:

  span()返回的元组包含了匹配的开始和结束位置

  string()返回传入函数的字符串

  group()返回匹配的字符串部分,group也包含三个部分

  start()返回匹配开始的位置

  end()返回匹配结束的位置

  span()返回一个元组包含匹配(开始,结束)的位置

  实例

  打印首个匹配出现的位置(start, end)

  正则表达式查找以大写“W”开头的任何单词:

  import re

  str = "I Want to go to school"

  x = re.search(r"\bW\w+", str)#\b是返回指定字符位于单词的开头或末尾的匹配项

  print(x.span())郑州妇科医院哪家好 https://yiyuan.120ask.com/zzfck/

  实例

  打印传入函数的字符串:

  import re

  str = ""I Want to go to school"

  x = re.search(r"\bW\w+", str)

  print(x.string)

  实例

  打印匹配的字符串部分

  正则表达式查找以写“W”开头的任何单词

  import re

  str = "I Want to go to school, the World is so quite"

  x = re.search(r"\bW\w+", str)

  print(x.group)

  

Python如何使用RegEx模块处理正则表达式?


  如果没有匹配项,则返回值None,而不是Match对象

  compile函数

  compile函数用于编译正则表达式,生成一个正则表达式(pattern)对象,供match()和search()这两个函数使用。

  import re

  pattern = re.compile(r'\d+')

  str = pattern.match("24Kobe Jodan23")#match查找头部

  print(str)

  str1 = pattern.search("Jodan23")

  print(str1)

  

Python如何使用RegEx模块处理正则表达式?


  re.match 与 re.search的区别

  re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,知道找到一个匹配。

  import re

  str = "I want to go to school"

  matchobj = re.match(r"to", str)

  if matchobj:

  print ("match --> matchobj.group() : ", matchobj.group())

  else:

  print ("No match!!")

  matchobj = re.search(r"to", str)

  if matchobj:

  print ("search--> matchobj.group() : ", matchobj.group())

  else:

  print ("No match!!")

  

Python如何使用RegEx模块处理正则表达式?


  正则表达式模式及实例

  模式字符串使用特殊的语法来表示一个正则表达式:

  反斜杠+字母/数字拥有不同含义

  因为正则表达式通常都包含反斜杠,所以最好使用原始字符串来表示它们,模式元素(如r’\b’ 等价于\ \b)匹配相应的特殊字符

  元字符

  特殊序列

  是指在\后跟下表中的某个字符,拥有特殊含义

  集合(set)

  集合是一对方括号[]内的一组字符,具有特殊含义

  以上就是RegEx模块处理正则表达式的详细内容,代码示例简单明了,如果在日常工作遇到此问题。通过这篇文章,希望你能有所收获,更多详情敬请关注行业资讯频道!

相关内容

热门资讯

美国中期选举:谁是骄兵必败,谁... 【文/观察者网专栏作者 周德宇】从特朗普二次执政以来,其民调可以说是一路雪崩,连累着共和党也一起遭殃...
芗城区科协开展全国科技工作者日... 5月27日,芗城区科协联合东铺头街道、瑞京社区等单位,走进芗城实幼东铺头园区,开展芗城区全国科技工作...
诺基亚发布新手机,售价199元... 5月29日,诺基亚官宣推出200 4G手机,售价199元,是首款微聊手机,可通过微信小程序与其他手机...
“超智算一号”算力卫星发布,石... 新京报讯(记者王景曦)随着数字经济与航天技术深度融合,太空算力已成为国家新型基础设施建设的战略制高点...
美财长:多年来美国一直处于沉睡... 据凤凰卫视报道,美国财政部长贝森特5月29日在里根国家经济论坛上发表演讲,为特朗普的“美国优先”经济...
菲律宾正成为日本“新型军国主义... 【文/观察者网专栏作者 丁铎】菲律宾总统费迪南德·小马科斯于2026年5月26日至29日对日本进行国...
要不要“卸磨杀驴”?印尼陷入两... 【文/观察者网专栏作者 罗仪馥】据报道,印尼中国商会总会近日向普拉博沃总统发出一封英文信函,直指该国...
新加坡贸易关系部长:新加坡正承... 中东局势持续紧张,正在通过能源、航运和供应链等渠道影响全球经济。对于高度依赖贸易、能源进口和国际物流...
原创 国... 当传统山水风光遇上前沿国产科技,国内知名山岳景区正在悄然完成一场体验变革。以黄山接入国产大模型、泰山...
2026深圳厂区人员定位技术升... 深圳厂区人员定位系统是依托无线传感与射频识别技术,对工业厂区、隧道作业等封闭或半封闭场所内的人员位置...