错误匹配的正则表达式
Wrong matching regex
所以我正在使用 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+?)*?$)
(只需更改括号的括号。
所以我正在使用 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+?)*?$)
(只需更改括号的括号。