Python 如何反映使用的是原始字符串还是普通字符串?

Python 如何反映使用的是原始字符串还是普通字符串?,python,string,python-3.x,reflection,rawstring,Python,String,Python 3.x,Reflection,Rawstring,我有一个配置文件,用户可以在其中提供正则表达式来匹配单词,例如 问题是:如果用户提供的“is”,这也将与“this”匹配——这不是我想要的。第二个正则表达式更好,因为它使用单词边界。不幸的是,对每个单词都这样做很烦人 我的想法如下:让用户指定原始字符串(为便于正则表达式匹配而不进行处理)和“普通字符串”(为了方便起见,它们首先被转换为r”\b({})\b)。format(word))。有没有办法实现这一点?是否可以使用反射来判断字符串最初是否作为原始字符串提供 是否可以使用反射来判断字符串最初是

我有一个配置文件,用户可以在其中提供正则表达式来匹配单词,例如

问题是:如果用户提供的
“is”
,这也将与
“this”
匹配——这不是我想要的。第二个正则表达式更好,因为它使用单词边界。不幸的是,对每个单词都这样做很烦人

我的想法如下:让用户指定原始字符串(为便于正则表达式匹配而不进行处理)和“普通字符串”(为了方便起见,它们首先被转换为
r”\b({})\b)。format(word)
)。有没有办法实现这一点?是否可以使用反射来判断字符串最初是否作为原始字符串提供

是否可以使用反射来判断字符串最初是否作为原始字符串提供

不幸的是,没有,因为在运行时原始字符串已经被计算,转义字符被转义,只是一个普通的ol'字符串;Python中没有“原始字符串类型”,它只是在语法级别上,您可以在其中进行区分

>>> type(r'\n') 
str

我希望Python能够通过反射从语法层提供任何有用的信息。根据我的理解,它已经这样做了,因为有
\uuu name\uuuu
等。我下一次尝试是检查转义序列,并推断是否是正则表达式或“简单单词”的意思——但这感觉不可靠。
>>> type(r'\n') 
str