Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex Apostrophe how to match?

Tags:

python

regex

I want to add to this rule match on Apostrophe '

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

I have tried:

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

but it sees the apostrophe as a line error, why?

like image 944
GrantU Avatar asked Jul 05 '13 10:07

GrantU


2 Answers

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"^[^*$<,>?!']*$")
like image 143
TerryA Avatar answered Sep 25 '22 15:09

TerryA


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
like image 42
Ashwini Chaudhary Avatar answered Sep 24 '22 15:09

Ashwini Chaudhary