Python Regex - 字符串 [A-Z] 和数字 [\d]

2024-10-02 02:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

我一直在搜索字符串([a-Z]和数字)。我搜索了类似的问题,这里--https://stackoverflow.com/a/28334645/4928635,上面写着(?=.*?\d) “检查至少一个数字”,但事实并非如此。如-

^{pr2}$

它给我打印了一个没有数字的字符串?在我的JupyterNotebook中打印的字符串如下所示-

 ABAB

如何捕获一个字符串-“可变字符数,至少2位,最多4位,例如-How to catch-aaabbb223”。。。在

进一步澄清-

  1. @pm-2ring:-数字和字母字符可以以任何顺序出现,im试图捕获的子串的长度可能不同。

  2. @jean fraçois fabre:-你似乎删除了你的答案-你给出的代码完全符合你所说的-谢谢。

  3. @clasg:-今天你的评论和回答都让我受益匪浅-我非常感激-我会在某个时候回复你,如果我想提高你的答案,我会告诉你的-非常感谢。


Tags: 字符串答案importresearchgroupplus数字
1条回答
网友
1楼 · 发布于 2024-10-02 02:23:55

你可以通过把量化转移到前瞻性和一些。。。在

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

它有点复杂,但它做的工作,因为它应该。在

[^\d\n]只匹配数字或换行符。使正向前瞻与此构造匹配任意次数(*),后跟一个数字,然后重复这个2-4次,最后再跟非数字/LF,使它只匹配包含2到4个数字的字符串。在

See it here at regex101。在

相关问题 更多 >

    热门问题