簡體   English   中英

通過python只捕獲正則表達式中的某些字符

[英]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

正則表達式構成思路:

  • 從ABC開始
  • 以DEF結尾
  • (L [0-9] +)或([0-9] +)或為空
 #!/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM