簡體   English   中英

為什么添加組時正則表達式不匹配?

[英]Why doesn't the regex match when I add groups?

我在python中有這個正則表達式代碼:

if re.search(r"\{\\fad|fade\(\d{1,4},\d{1,4}\)\}", text):
  print(re.search(r"\{\\fad|fade\((\d{1,4}),(\d{1,4})\)\}", text).groups())

text{\\fad(200,200)}Épisode 101 : {\\i1}The Ghost{\\i0}\\Nv. 1.03 {\\fad(200,200)}Épisode 101 : {\\i1}The Ghost{\\i0}\\Nv. 1.03並從文件中讀取(不知道是否有幫助)。

這將返回以下內容:

(None, None)

當我將打印中的正則表達式更改為r"\\{\\\\fad\\((\\d{1,4}),(\\d{1,4})\\)\\}" ,它返回正確的值:

(200, 200)

任何人都可以看到為什么條件fad|fadere.search中的正則表達式匹配但是沒有返回打印中組的正確值?

謝謝。

在選擇周圍添加額外的parens: re.search(r"{(?:\\\\fad|fade)\\((\\d{1,4}),(\\d{1,4})\\)}", text).groups()

此外,沒有必要轉義{}括號,它只是不必要地混亂你的正則表達式。

括號是從淡入淡出開始的分支或分支的一部分,所以它正在尋找“{fad”或“fade(...”。你需要將時尚|淡化部分組合在一起。嘗試:

r"\{\\(?:fad|fade)\(\d{1,4},\d{1,4}\)\}"

[編輯]你進入if塊的原因是因為正則表達式匹配的,但只是因為它檢測到它以“{\\ fad”開頭。 但是,該部分匹配不包含任何組。 如果要捕獲它們,則需要與定義組的部件匹配。

嘗試這個:

r"\{\\fade?\(\d{1,4},\d{1,4}\)\}"

我認為你的條件是尋找“\\ fad”或“fade”,我認為如果你想尋找“\\ fad”或“\\ fade”,你需要在分組之外移動\\。

試試這個:

r"\{\\fade?\((\d{1,4}),(\d{1,4})\)\}"

e? 是一個可選的e 你擁有它的方式現在匹配{\\fadfade(0000,0000)}

我不知道正則表達式的python方言,但你不需要以某種方式“分組”“fad | fade”以確保它不是試圖找到“時尚或淡化(等等......)?

暫無
暫無

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

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