Python中的通配符匹配

2024-05-19 11:02:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为Pattern的类,其中有两个方法,equals和setwildcard。等同返回子字符串首先出现在字符串中的索引,而setwildcard在子字符串中设置通配符

所以

p = Pattern('xyz')
t = 'xxxxxyz'
p.equates(t)

返回4

同时

p = Pattern('x*z', '*')
t = 'xxxxxgzx'
p.equates(t)

返回4,因为*是通配符,可以匹配t中的任何字母,只要x和z匹配。 最好的方法是什么?


Tags: 方法字符串字母patternxyz通配符equalssetwildcard
1条回答
网友
1楼 · 发布于 2024-05-19 11:02:36

看起来您实际上是在实现正则表达式的子集。幸运的是,Python有一个内置的库!如果您不熟悉正则表达式(或者他们的朋友称之为regex)的工作方式,我强烈建议您通读documentation for them

无论如何,函数re.search正是您要寻找的。它的第一个参数是要匹配的模式,第二个参数是要匹配的字符串。如果模式匹配,search返回一个SRE_Match对象,该对象有一个#start()方法,该方法返回匹配开始时的索引。

要使用示例中的数据:

 import re
 start_index = re.search(r'x.z', 'xxxxxgzg').start()

注意,在regex中,.-而不是*-是通配符,因此必须在使用的模式中替换它们。

相关问题 更多 >

    热门问题