我试图找出哪些单词或一组单词用单引号或双引号括起来.
我使用下面的正则表达式模式对其进行了双引号测试.然而,问题仍然是一样的,即使我有一个单词以单双引号开始,以两个双引号结束,它也给了我输出值.我希望除了每个单词用两个双引号括起来外,还有什么额外的引号应该找到,因为我必须删除这些额外的引号.
f = '"country id"" "state id"'
print(re.findall('^".*["\s"][a-z].*"$',f))
我试图找出哪些单词或一组单词用单引号或双引号括起来.
我使用下面的正则表达式模式对其进行了双引号测试.然而,问题仍然是一样的,即使我有一个单词以单双引号开始,以两个双引号结束,它也给了我输出值.我希望除了每个单词用两个双引号括起来外,还有什么额外的引号应该找到,因为我必须删除这些额外的引号.
f = '"country id"" "state id"'
print(re.findall('^".*["\s"][a-z].*"$',f))
您可以使用
^\s*"[^"]*"(?:\s*"[^"]*")*\s*$
参见regex demo.Details:
^
-字符串开始\s*
-零或更多(此处为前导)空格"[^"]*"
-"
,除"
以外的零个或多个字符,然后是"
(?:\s*"[^"]*")*
-零个或多个空格序列,然后是"
个字符之间的子字符串,其中没有其他"
个字符\s*
-零个或更多(此处为尾随)空格$
-字符串结束.如果存在转义序列,则需要将其修改为
^\s*"[^"\\]*(?:\\.[^"\\]*)*"(?:\s*"[^"\\]*(?:\\.[^"\\]*)*")*\s*$
这里使用"[^"\\]*(?:\\.[^"\\]*)*"
而不是"[^"]*"
来匹配
"
-"
字符[^"\\]*
-除"
和\
之外的零个或更多字符(?:\\.[^"\\]*)*
-任何转义字符(换行字符除外)的零个或多个序列,然后是"
和\
以外的零个或多个字符"
-"
字符