簡體   English   中英

Python 正則表達式 - 帶有 [AZ] 和 DIGITS [\\d] 的字符串

[英]Python Regex - STRING with [A-Z] and DIGITS [\d]

import re 

 str_1 = "ABABABABABAabababaacdcdcdcd"
 str_2 = "ABABABABAB1ab2babaacdcdcdcd"
 str_3 = "123456A"
 str_4 = "123456"

 #str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{10,}',str_2).group(0)
 str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{2,4}',str_2).group(0)
 print(str_3Plus_d)

 #str_3plus_a = re.search(r'(?=.*?\d)(?=.*?[A-Z])[A-Z\d]{3,}',str_4).group(0)

 #str_3plus_both = re.search(r'(?=.*?\d)(?=.*?[A-Z])[A-Z\d]{3,}',str_4).group(0)

我一直在搜索字符串([AZ] 和數字)。 我在這里搜索了類似的問題 - https://stackoverflow.com/a/28334645/4928635 ,它說(?=.*?\\d) “檢查至少一位數字”,但這似乎不是案子。 正如在 -

str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{2,4}',str_2).group(0)
print(str_3Plus_d)

它給我打印了一個沒有數字的字符串? 它在我的 JupyterNotebook 中打印的字符串如下所示 -

 ABAB

如何捕獲帶有 - “可變數量的字符和至少 2 位數字,最多 4 位數字的字符串,例如 - 如何捕獲 - AAABBB2223”...

進一步說明——

  1. @pm-2ring :- 數字和字母字符可以以任何順序出現,我試圖捕獲的子字符串的長度可能會有所不同。

  2. @jean-françois-fabre :-您似乎已經刪除了您的答案-您提供的代碼完全符合您的要求-謝謝。

  3. @clasg :- 今天你的評論和回答都教會了我很好 - 我非常感激 - 我會在某個時候回復並讓你知道我是否想支持你的回答 - 非常感謝。

您可以通過將量化移動到前瞻性和一些...

^(?=(?:[^\d\n]*\d){2,4}[^\d\n]*$)[A-Z\d]*$

它有點復雜,但可以正常工作。

[^\\d\\n]匹配除數字或換行符以外的任何內容。 使正前瞻匹配這個構造任意次數( * ),后面跟着一個數字,然后重復2-4次,最后接着非數字/ LF再次,使得只有當它包含之間匹配的字符串2 位和 4 位數字。

在 regex101 上看到它

暫無
暫無

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

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