关于python的语法解释器与re模块语法解释器的冲突情况
python程序的运行需要依靠python解释器对语法进行语法分析,词法分析,而在python中如果又impot了像re(正则表达式)等模块,这种情况下,对于一些特殊字符的意义会有相应的冲突。例如“\”对于python解释器和正则表达式的解释器都有特殊的意义,所以需要提前了解释的顺序跟过程。又例如“\b”在ASCII中表示退格键,而在python中,"\b"是一个正则表达式的符号,用于表述特殊字符的边界。所以,想让正则表达式将“\b”表达成字符的边界而不是退格键,所以需要多加一个“\”来表示转义,即“\b”。
上述方法可以说是通过解释器一层层的传递进入到re模块的,但是这种方法较为复杂,还得“算一算”,正则表达式一复杂就更为麻烦了,在正则表达式之前,使用"r"表示python并不去解析特定字符串的意义,而是将看到的任何字符当成普通字符。换句话说,python不在将看到的特殊字符当成特殊字符来处理了。
示例:
import re
print("Elon Musk is the CEO of the SpaceX.")
print("Elon Musk is the \n CEO of the SpaceX.")
print(r"Elon Musk is the \n CEO of the SpaceX.")
"""
Elon Musk is the CEO of the SpaceX.
Elon Musk is the
CEO of the SpaceX.
Elon Musk is the \n CEO of the SpaceX.
"""
r 去掉了\n换行的意义,直接当成字符串打印在了结果中