簡體   English   中英

正則表達式(python):如何匹配某些查詢

[英]Regex (python): how to match for certain query

我有一個字符串列表,其中每一行都是這樣的:

1.alfa.america.game

我需要用不同的參數查詢這一行,如果匹配,打印出來。 在這個例子中,我得到了所有有“1”和“db”的行,但也得到了其他的,即:

11.alfa.cad.base

我不想得到帶有“11”或“db”的行,只有完全匹配。 這就是我所做的:

代碼:

    ID = "1"
    task = "db"
    environment = "a-z"
    location = "a-z"
    fullString = "1.alfa.america.game" #this string can change

    q = re.compile(r'(['+ID+'])+.(['+task+'])+.(['+environment+'])+.(['+location+'])+.', flags=re.I | re.X)
m = q.match(fullString)
if m:
    print (fullString)

提前致謝!

關於模式的一些注釋,其中一些已經在評論中提到。

使用當前變量,模式將是

([1])+.([db])+.([a-z])+.([a-z])+.
  • 在這里, . 匹配任何字符而不是僅匹配點。
  • 如果您不想匹配 11,則不應為組或字符 class 使用量詞
  • 重復捕獲組()+將捕獲最后一次迭代的值,您希望將組值作為一個整體,因此您可以重復字符 class
  • 由於像1db這樣的字符串是硬編碼的,因此您實際上不必捕獲它們

考慮到這一點,您可以改用 2 個捕獲組。 當您使用re.match時,您可以省略開頭的錨點並使用\Z斷言字符串的結尾

1\.db\.([a-z]+)+\.([a-z]+)\Z
  ^    ^          ^
  Dot  group 1    group 2

正則表達式演示

q = re.compile(ID+r'\.'+task+'\.(['+environment+']+)+\.(['+location+']+)\Z', flags=re.I)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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