所以我正在使用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+?)*?$)
(只需更改括号以括号即可。