【问题标题】:Is there a way to implement a wildcard method with the function "find"?有没有办法用“find”函数实现通配符方法?
【发布时间】:2017-02-01 00:54:07
【问题描述】:

我对 Python 很陌生。我知道 find 函数接受一个字符串 p 和一个子字符串 s 并返回 s 在 p 中出现的索引。但如果我有类似的东西

p = 'abc'
text = 'aaaabbaac'
text.find(p)

是否可以编写一个方法,让我将通配符设置为 b 并仍然返回 a 和 c 匹配的索引,而不是返回 -1?

我在一个有两个方法的类中使用它,find 方法和一个“setwildcard”方法,它接受一个字符并执行我上面描述的操作。默认情况下,通配符设置为无。

【问题讨论】:

  • 没有。使用正则表达式和re.findall()
  • 询问如何“使用正则表达式”太宽泛了。查看文档并自己尝试一下。该模块在 Python 中称为 re,是标准库的一部分。

标签: python string design-patterns find wildcard


【解决方案1】:

您可以将compile 一个正则表达式模式转换为一个正则表达式对象,该对象可用于使用其match()search() 方法进行匹配。

import re 
reObj2 = re.compile(pattern)  
reObj2.search(s)  

re.match() 只会匹配字符串的开头而不匹配 每行的开头。

re.search() 扫描字符串寻找第一个位置 表达式模式产生一个匹配,并返回一个对应的 MatchObject 实例。

另外,如果你想返回字符串中所有不重叠的模式匹配,你可以使用re.findall()

看看re

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2021-04-21
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多