Use*_*ser 3 python string wildcard match matching
我有一个名为 Pattern 的类,其中有两个方法,即 equals 和 setwildcard。Equates 返回子字符串在字符串中首次出现的索引,setwildcard 设置子字符串中的通配符
所以
p = Pattern('xyz')
t = 'xxxxxyz'
p.equates(t)
Run Code Online (Sandbox Code Playgroud)
返回 4
还
p = Pattern('x*z', '*')
t = 'xxxxxgzx'
p.equates(t)
Run Code Online (Sandbox Code Playgroud)
返回 4,因为 * 是通配符,可以匹配 t 内的任何字母,只要 x 和 z 匹配。实现这一点的最佳方法是什么?
小智 10
正如已接受的答案所示,正则表达式是处理该问题的一种方法。不过,如果您需要更简单的模式(例如 Unix shell 风格的通配符),那么fnmatch内置库可以提供帮助:
表达方式:
*- 匹配一切?- 匹配任何单个字符[seq]- 匹配任意字符seq[!seq]- 匹配不在其中的任何字符seq例如,尝试找到与以下内容匹配的任何内容localhost:
import fnmatch
my_pattern = "http://localhost*"
name_to_check = "http://localhost:8080"
fnmatch.fnmatch(name_to_check, my_pattern) # True
Run Code Online (Sandbox Code Playgroud)
这样做的好处是它/不被视为特殊字符,因此对于文件名/URL 匹配来说,这种方法效果很好,无需预先转义所有斜杠!
| 归档时间: |
|
| 查看次数: |
35623 次 |
| 最近记录: |