正则表达式撇号怎么搭配?

时间:2013-07-05 10:32:25

标签: python regex

我想在 Apostrophe '

上添加此规则匹配
rule = re.compile(r'^[^*$<,>?!]*$')

我试过了:

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

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

2 个答案:

答案 0 :(得分:8)

你必须逃避撇号,否则它将被计为原始字符串的结尾:

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

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

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

答案 1 :(得分:6)

错误的发生是因为您无法在'内直接使用单个'',同样单"也无法在""内使用,因为这会混淆python,现在它不知道字符串实际结束的位置。

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

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