2024-05-19 11:02:36 发布
网友
我有一个名为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匹配。 最好的方法是什么?
看起来您实际上是在实现正则表达式的子集。幸运的是,Python有一个内置的库!如果您不熟悉正则表达式(或者他们的朋友称之为regex)的工作方式,我强烈建议您通读documentation for them。
无论如何,函数re.search正是您要寻找的。它的第一个参数是要匹配的模式,第二个参数是要匹配的字符串。如果模式匹配,search返回一个SRE_Match对象,该对象有一个#start()方法,该方法返回匹配开始时的索引。
re.search
search
SRE_Match
#start()
要使用示例中的数据:
import re start_index = re.search(r'x.z', 'xxxxxgzg').start()
注意,在regex中,.-而不是*-是通配符,因此必须在使用的模式中替换它们。
.
*
看起来您实际上是在实现正则表达式的子集。幸运的是,Python有一个内置的库!如果您不熟悉正则表达式(或者他们的朋友称之为regex)的工作方式,我强烈建议您通读documentation for them。
无论如何,函数
re.search
正是您要寻找的。它的第一个参数是要匹配的模式,第二个参数是要匹配的字符串。如果模式匹配,search
返回一个SRE_Match
对象,该对象有一个#start()
方法,该方法返回匹配开始时的索引。要使用示例中的数据:
注意,在regex中,
.
-而不是*
-是通配符,因此必须在使用的模式中替换它们。相关问题 更多 >
编程相关推荐