gpt4 book ai didi

python - 如何从正则表达式模式返回随机字符? python 3

转载 作者:行者123 更新时间:2023-12-01 09:03:19 25 4
gpt4 key购买 nike

我想知道是否有可能从短期编写的正则表达式模式返回单个随机字符。

这是我的案例..

我创建了一些包含在枚举中的正则表达式模式:

import random
from _operator import invert
from enum import Enum
import re

class RegexExpression(Enum):
LOWERCASE = re.compile('a-z')
UPPERCASE = re.compile('A-Z')
DIGIT = re.compile('\d')
SYMBOLS = re.compile('\W')

我希望根据下面的方法将它们作为包含正则表达式表达的所有字符的字符串返回:

def create_password(symbol_count, digit_count, lowercase_count, uppercase_count):
pwd = ""
for i in range(1, symbol_count):
pwd.join(random.choice(invert(RegexExpression.SYMBOLS.value)))
for i in range(1, digit_count):
pwd.join(random.choice(invert(RegexExpression.DIGIT.value)))
for i in range(1, lowercase_count):
pwd.join(random.choice(invert(RegexExpression.LOWERCASE.value)))
for i in range(1, uppercase_count):
pwd.join(random.choice(invert(RegexExpression.UPPERCASE.value)))
return pwd

我已经尝试了几种方法,但我发现唯一可能的选择是使用包含长正则表达式模式的枚举,或如下例中的字符串:

LOWERCASE = "abcdefghijklmnopqrstuvwxyz"

...其他正在使用的变量依此类推。

针对这种情况有什么建议或解决方案吗?

--编辑--

疯狂物理学家为我的问题带来了解决方案 - 非常感谢!这是工作代码:

def generate_password(length):
tmp_length = length
a = random.randint(1, length - 3)
tmp_length -= a
b = random.randint(1, length - a - 2)
tmp_length -= b
c = random.randint(1, length - a - b - 1)
tmp_length -= c
d = tmp_length

pwd = ""
for i in range(0, a):
pwd += random.choice(string.ascii_lowercase)
for i in range(0, b):
pwd += random.choice(string.ascii_uppercase)
for i in range(0, c):
pwd += random.choice(string.digits)
for i in range(0, d):
pwd += random.choice(string.punctuation)

pwd = ''.join(random.sample(pwd, len(pwd)))
return pwd

最佳答案

string模块有您想要的所有定义。

RegEx 并不真正适合这项任务。表达式用于检查字符是否属于某个类。我不知道有什么好的方法可以在不了解源代码/实现细节的情况下检查字符类的规范。

关于python - 如何从正则表达式模式返回随机字符? python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52284968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com