匹配的正则表达式不正确

问题描述 投票:0回答:1

所以我正在使用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)
python-3.x boolean-logic re
1个回答
0
投票

[如果您期望不匹配,我认为您的问题出在[ & ~*\w+?]*部分。方括号之间的字符表示一次出现&,〜,*,*,?,wordspace。最后的星号(*)使括号中的内容出现零次或多次出现。

如果您想要将此子正则表达式& ~*\w+?匹配零次或多次,请使用括号。

所以我想说您想要此正则表达式:(^~*\w+?( & ~*\w+?)*?$)(只需更改括号以括号即可。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.