在python正则表达式中是否只能匹配通配符?

2024-06-01 09:50:26 发布

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

情况是这样的:

前端将正则表达式传递给后端,后端获取并执行正则表达式。但我只想执行通配符匹配

例如: 前端通行证bash-1.*.0,它运行良好

但是bash-1.(hello):*.0,它将不匹配bash-1.(hello):1.0

那么,是否可能只通过python re模块匹配通配符


Tags: 模块rebashhello情况通行证通配符
3条回答

regex.将匹配除行终止符之外的任何内容一次,其中.*将匹配无限次

在您当前的模式中,您试图匹配一个.,但是忘记了转义它,这意味着它将匹配任何东西。您应该正确地转义.(),然后才能找到匹配项

string = 'bash-1.(hello):1.0'
pattern = 'bash-1\.\(hello\):.\.0'
re.match(pattern, string)
#<re.Match object; span=(0, 18), match='bash-1.(hello):1.0'>

https://regex101.com/r/Wj3V7e/1

您正在查找.*{}是通配符,*是任意数字(而可比较的?是零或一,并且+至少是一个

如果需要全局样式匹配,则应该使用stdlib中的^{}模块。例如:

import fnmatch
print(fnmatch.fnmatch("bash-1.(hello):1.0","bash-1.(hello):*.0")) # True
print(fnmatch.fnmatch("bash-1.(goodbye):1.0","bash-1.(hello):*.0")) # False

相关问题 更多 >