2024-06-01 09:50:26 发布
网友
情况是这样的:
前端将正则表达式传递给后端,后端获取并执行正则表达式。但我只想执行通配符匹配
例如: 前端通行证bash-1.*.0,它运行良好
bash-1.*.0
但是bash-1.(hello):*.0,它将不匹配bash-1.(hello):1.0
bash-1.(hello):*.0
bash-1.(hello):1.0
那么,是否可能只通过python re模块匹配通配符
在regex中.将匹配除行终止符之外的任何内容一次,其中.*将匹配无限次
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
在
regex
中.
将匹配除行终止符之外的任何内容一次,其中.*
将匹配无限次在您当前的模式中,您试图匹配一个
.
,但是忘记了转义它,这意味着它将匹配任何东西。您应该正确地转义.
和()
,然后才能找到匹配项https://regex101.com/r/Wj3V7e/1
您正在查找}是通配符,
.*
{*
是任意数字(而可比较的?
是零或一,并且+
至少是一个)如果需要全局样式匹配,则应该使用stdlib中的^{} 模块。例如:
相关问题 更多 >
编程相关推荐