[英]capturing only certain characters in regular expression by python
我正在嘗試創建檢測某些字符串的模式。 基本上,目的是如果在字符串中檢測到“ ABCDEF”,然后返回“ true”。 但在“ ABC”和“ DEF”之間,會出現(L + count)或(number)或類似以下示例的情況。 順便說一句,下面的所有示例都返回“ true”。 如果有人可以建議如何忽略“ ABC”和“ DEF”之間的數字和字符組合,將不勝感激?
ABC(L30)(345)DEF, ABC(L2)(45)DEF, ABCDEF, ABC(L10)DEF, ABC(2)DEF
正則表達式構成思路:
#!/usr/bin/python import re r=re.compile("ABC(\\(L[0-9]+\\)|\\([0-9]+\\)|)*DEF"); lines = [ "ABC(L30)(345)DEF", "ABC(L2)(45)DEF", "ABC(L30)DEF", "ABC(345)DEF", "ABCDEF", "ABCxyzDEF", "ABC(L)DEF", "ABC(A)DEF", "ABC()DEF", ] for str in lines: if r.match(str): print " match : %s" % str else: print "not match : %s" % str
輸出:
match : ABC(L30)(345)DEF match : ABC(L2)(45)DEF match : ABC(L30)DEF match : ABC(345)DEF match : ABCDEF not match : ABCxyzDEF not match : ABC(L)DEF not match : ABC(A)DEF not match : ABC()DEF
def is_in(string_,word_):
import re
return word_ in [''.join(re.split('\(.+?\)\(.+?\)|\(.+?\)',string_))][0]
s = "ABC(L30)(345)DEF, ABC(L2)(45)DEF, ABCDEF, ABC(L10)DEF, ABC(2)DEF"
print(is_in(s,'ABCDEF'))
True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.