【问题标题】:How to reflect if a raw or normal string was used?如何反映是否使用了原始字符串或普通字符串?
【发布时间】:2017-07-09 15:28:21
【问题描述】:

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

wordlist =  ["is", r"\b(and)\b"]

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

我的想法如下:让用户指定原始字符串(为进行正则表达式匹配而保持不变)和“普通字符串”(为方便起见,首先将其翻译为r"\b({})\b".format(word))。有没有办法实现这个?是否可以使用反射来判断一个字符串最初是否作为原始字符串提供?

【问题讨论】:

    标签: python string python-3.x reflection rawstring


    【解决方案1】:

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

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

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

    【讨论】:

    • 我希望 Python 能够通过反射从语法级别提供任何有用的信息。据我了解,它已经做到了,因为有__name__ 等。我的下一个尝试是检查转义序列并推断是否意味着正则表达式或“简单词”——但这感觉不可靠。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 2014-08-06
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多