5

我想在Apostrophe上添加此规则匹配 '

rule = re.compile(r'^[^*$<,>?!]*$')

我努力了:

rule = re.compile(r'^[^*$<,>?!']*$')

但它将撇号视为行错误,为什么?

4

2 回答 2

9

您必须转义撇号,否则它将被视为原始字符串的结尾:

rule = re.compile(r'^[^*$<,>?!\']*$')

或者,您可以使用"来包围您的字符串,这在 python 中是完全有效的:

rule = re.compile(r"^[^*$<,>?!']*$")
于 2013-07-05T10:33:09.067 回答
8

错误的出现是因为您不能直接'在内部使用单个,''并且同样"不能在内部使用单个,""因为这会使 python 感到困惑,现在它不知道字符串实际结束的位置。

您可以使用双引号或使用 a 转义单引号'\'

rule = re.compile(r"^[^*$<,>?!']*$")

演示:

>>> strs = 'can\'t'
>>> print strs
can't
>>> strs = "can't"
>>> print strs
can't
>>> 'can't'  #wrong, SyntaxError: invalid syntax

>>> "can"t"  #wrong, SyntaxError: invalid syntax
于 2013-07-05T10:33:18.680 回答