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

Gra*_*ntU 4 python regex

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

rule = re.compile(r'^[^*$<,>?!]*$')
Run Code Online (Sandbox Code Playgroud)

我试过了:

rule = re.compile(r'^[^*$<,>?!']*$')
Run Code Online (Sandbox Code Playgroud)

但它认为撇号是线误差,为什么?

Ter*_*ryA 8

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

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

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

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


Ash*_*ary 7

之所以出现错误,是因为你不能直接使用单个'内部'',同样单个内部"也不能使用,""因为这会混淆python,现在它不知道字符串实际结束的位置.

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

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

演示:

>>> 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
Run Code Online (Sandbox Code Playgroud)