我猜你要找的是这个:
import re
pat = "^[^\']*\'[^\']*$"
print (re.match(pat, "aeh'3q4'bl;5hkj5l;ebj3'"))
print (re.match(pat, "aeh3q4'bl;5hkj5l;ebj3'"))
print (re.match(pat, "aeh3q4bl;5hkj5l;ebj3'"))
print (re.match(pat, "'"))
print (re.match(pat, ""))
提供输出:
None
None
<_sre.SRE_Match object; span=(0, 21), match="aeh3q4bl;5hkj5l;ebj3'">
<_sre.SRE_Match object; span=(0, 1), match="'">
None
"^[^\']*\'[^\']*$" 做什么?
^ 匹配字符串的开头
[^\']* - * 匹配 [] 中定义的集合中的 0 个或多个字符。在这里,我们有一个使用^ 的集合否定。该集合被定义为一个字符 - ',它被转义,因此看起来像 \'。总之,这个组匹配任意数量的任意字符除了'
\' - 匹配一个且唯一的字符 '
$ - 匹配字符串的结尾。如果没有它,部分匹配可能会包含更多 ' 字符。您可以与上面的比较:
print (re.match("^[^\']*\'[^\']*", "aeh'3q4'bl;5hkj5l;ebj3'"))
<_sre.SRE_Match object; span=(0, 7), match="aeh'3q4">