簡體   English   中英

RegEx :匹配除特定子字符串之外的所有行

[英]RegEx : Match all lines except for a specific sub-string

以下是列表:

cf-ab1
cf-bc2
cf-ab1-hotfix
cf-bc2-hotfix
cf-ab1-canary
cf-cd1-staging
cf-cd1-staging2
cf-cd1
cf-cd1-sic-staging
cf-cd1-sagdf-staging

我想匹配除cf-cd1-staging, cf-cd1-staging2 and cf-ab1-canary我正在運行以下正則表達式:

 ^((?!canary|staging).)*$

但是這些理想情況下匹配所有不包含 staging 和 canary 的行..! 這不應該是我想要的 o/p。

你能在這里幫忙嗎..!? 因為我想要的比賽應該是:

cf-ab1
cf-bc2
cf-ab1-hotfix
cf-bc2-hotfix
cf-cd1
cf-cd1-sic-staging
cf-cd1-sagdf-staging

問候,

羅希特

嘗試這個 : -

import re

lines = ["cf-ab1", "cf-bc2", "cf-ab1-hotfix", "cf-bc2-hotfix", "cf-ab1-canary", "cf- 
cd1-staging", "cf-cd1-staging2", "cf-cd1", "cf-cd1-sic-staging", "cf-cd1-sagdf- 
staging"]

line_compile = re.compile('^(?!.*(ab1-canary|cd1-staging|cf-ab1-canary)).*$')

matched = []

for line in lines:
  if  line_compile.match(line):
     matched.append(line)

與 RegEx 一樣,有許多可能的解決方案。 我很快就想出了一個,但你可能會爭辯說它過擬合到那個數據集並且不是很普遍。

^cf-\w\w\d(-[hs][oia][tcg].+?)?$

我只是在方括號中寫了所有“允許”的字母,直到不再可能出現不需要的匹配為止。 另外,我把后半部分放在()? 這樣兩個短條目也匹配。

暫無
暫無

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

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