regex 用Python正则表达式查找所有带点的小写字符串

tktrz96b  于 2022-12-19  发布在  Python
关注(0)|答案(2)|浏览(141)

尝试用python查找双引号内的所有字符串,并使用类似域名的格式,如"abc.def.ghi"
我目前使用的是re.findall('\"([a-z\\.]+[a-z]*)\"', input_string)
[a-z\\.]+代表abc.def.[a-z]*代表ghi
到目前为止,匹配所有字符串(如"abc.def.ghi")没有问题,但它也匹配不包含.的字符串,如"opq""rst"
问题是,如何使用regx去掉那些不包含点号.的字符串?

djp7away

djp7away1#

    • 模式**
'"([a-z]+(?:\.[a-z]+)+)"'
    • 说明**
  • 以双引号开头和结尾
  • 俘获群
  • [a-z]+一个字母a-z
  • 捕获组的(?:...)嵌套非捕获亚组
  • 句点后跟至少一个字母a-z(至少重复一次)
  • 嵌套子组至少重复一次
  • 使子组成为非捕获,因为否则findall将仅报告此子组
    • 用法**
pattern = re.compile(r'\"[a-z]+(?:\.[a-z]+)+\"')
tests = ['"abc.def.ghi"', '"opq"']
for input_string in tests:
    print(f"input_string: {input_string}, findall:  {pattern.findall(input_string)}")
    • 产出**
input_string: "abc.def.ghi", found:  ['abc.def.ghi']
input_string: "opq", found:  []
00jrzges

00jrzges2#

[a-z\\.]+

这部分.匹配任何字符a-z或.如果你想要点在那里,你将必须到移动它外面这字符集某事象

([a-z]+\\.)+

结果:visualization

相关问题