Regex Apostrophe how to match?

后端 未结 2 630
北荒
北荒 2021-01-19 08:16

I want to add to this rule match on Apostrophe \'

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

I have tried:

相关标签:
2条回答
  • 2021-01-19 08:54

    The error comes because you cannot directly use a single ' inside '' and similarly single " can't be used inside "" because this confuses python and now it doesn't know where the string actually ends.

    You can use either double quotes or escape the single quote with a '\':

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

    Demo:

    >>> 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
    
    0 讨论(0)
  • 2021-01-19 09:07

    You have to escape the apostrophe, otherwise it will be counted as the end of the raw string:

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

    Or, you can use " to surround your string, which is perfectly valid in python:

    rule = re.compile(r"^[^*$<,>?!']*$")
    
    0 讨论(0)
提交回复
热议问题