我想做到以下幾點,並有指定的行打印:正則表達式中集
a=set(['bye', 'hits', 'hi'])
if r'.i*' in a:
print "This is what I want to see."
else:
print "Sadly, this is what I actually see."
不幸的是,in
關鍵字不執行所設定的正則表達式搜索。
有沒有辦法做到這一點?
我想做到以下幾點,並有指定的行打印:正則表達式中集
a=set(['bye', 'hits', 'hi'])
if r'.i*' in a:
print "This is what I want to see."
else:
print "Sadly, this is what I actually see."
不幸的是,in
關鍵字不執行所設定的正則表達式搜索。
有沒有辦法做到這一點?
可悲的是,你在這裏需要一個循環:
import re
a = {'bye', 'hits', 'hi'}
if any(re.match(r'.i*',s) for s in a):
print "see this"
我用re.match
,但是否希望或re.search
現在還不清楚。
注: 所有這一切r'my string'
表示是原始字符串,不是正則表達式。使用原始字符串可確保正常轉義序列(以\
開頭)不會轉義。這在正則表達式中很有用,因爲re
模塊也使用轉義序列。通過使用原始字符串,可以避免必須雙重轉義字符串(例如'a\\double escaped string'
)。
我還想指出'r「」'不是正則表達式的特殊語法,因爲OP可能相信;它是一個[原始字符串](http://docs.python.org/2/reference/lexical_analysis.html#string-literals),這意味着反斜槓的解釋不同。 – Cairnarvon 2013-02-22 01:53:31
謝謝@Cairnarvon,我的信念是錯誤的。 – Richard 2013-02-22 01:55:31
我冒昧地添加了一些關於原始字符串的信息。 – 2013-02-22 01:55:35
請注意,如果您已經過了2.6,您可以使用設置字面值,例如:'{'bye','hits','hi'}'。 – 2013-02-22 01:48:09
你可以加入到一個單一的字符串,並測試? – 2013-02-22 01:52:43
這可能適用於@BillyMoon的一些情況。但是,由於連接字符可能與正則表達式匹配,因此這不是一個通用的解決方案。 – Richard 2013-02-22 01:56:43