python-3.x - 错误的匹配正则表达式
问题描述
所以我使用 re 模块来编译我的正则表达式,我的正则表达式看起来像这样:
"(^~ \w+?[ & ~ \w+?]*?$)"
所以我使用 pattern = re.compile(regex) 编译它,然后我使用 re.findall(pattern, string) 来查找给定的字符串是否匹配,如果匹配则给我组。
我匹配的字符串是“v1 V ~v2_ V ~~v3”。
我希望没有匹配,但它说它匹配正则表达式。我怀疑 \w+ 匹配空格,以便它匹配整个字符串,但我在文档中找不到正确的。我错过了什么?
这是最小的可复制示例:
import re
test_string = "v1 V ~v2_ V ~~v3"
regex = "(^~*\w+?[ & ~*\w+?]*?$)"
pattern = re.compile(regex)
for elem in re.findall(regex, test_string):
print(elem)
解决方案
如果您希望不匹配,我认为您的问题在于[ & ~*\w+?]*
部分。方括号之间的字符表示出现一次,在这种情况下,出现一次 &、~、*、?word
和space
。最后的星号 ( *
) 使括号中的内容出现零次或多次。
如果您想要匹配此子正则表达式& ~*\w+?
零次或多次,请使用括号。
所以我会说你想要这个正则表达式:((^~*\w+?( & ~*\w+?)*?$)
只需更改括号的括号。
推荐阅读
- python - 通过基于 chi^2=2 设置计算 python curvefit/polyfit 中的错误
- python-3.x - 不知道如何在列表中使用“if in”
- javascript - 输入提交按钮 - Html.buttonfor
- coinbase-api - 汇率似乎不一致。某些货币不显示,但在某些级别受支持
- python - django 链接到另一个页面确实呈现新页面
- c# - 方法不从另一个方法返回随机数
- c# - 数据模板中的数据绑定自定义用户控件
- typescript - 打字稿处理编译错误
- php - 限制单个输入字段中的重复
- javascript - 循环数据以使用 JavaScript 创建具有键/值对的字典