2017-02-20 81 views
0

我有一個配置文件,用戶可以提供正則表達式來匹配單詞,例如,如何反映是否使用了原始字符串或正常字符串?

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

的問題是:如果一個用戶提供"is",這也將對陣"This" - 這是不是我想要的。第二個正則表達式更好,因爲它使用了單詞邊界。不幸的是,這對每個單詞都很煩人。

我的想法如下:讓用戶指定原始字符串(原始字符串與正則表達式匹配)和「正常字符串」(爲方便起見,它們首先轉換爲r"\b({})\b".format(word))。有沒有辦法來實現這個?可以使用反射來判斷一個字符串最初是否作爲原始字符串提供?

回答

1

燦反射被用來判斷一個字符串最初爲原料串提供

不幸的是,沒有,因爲在運行時的原始字符串已經評估,轉義字符逃脫,根本就是普通ol'字符串;在Python中沒有「原始字符串類型」,它只是在語法層面上,您可以進行區分。

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

我希望Python能通過反射從語法級別提供任何有用的信息。根據我的理解,它已經做到了,因爲有'__name__'等。我的下一個嘗試是檢查轉義序列並推斷是否使用正則表達式或「簡單單詞」 - 但這種感覺不可靠。 – duesee

相關問題