python 正则表达式生成_python – 随机生成与给定正则表达式不匹配的字符串

我最初的直觉是,不,这样的库不存在,因为它是不可能的.您无法确定在合理的时间内是否可以为任意正则表达式找到有效输入.

例如,证明数字是否是素数被认为是难以解决的数学问题.以下正则表达式匹配任何长度至少为10000个字符且总长度为素数的字符串:

(?!(..+)\1+$).{10000}

我怀疑是否存在可以在合理的时间内找到该正则表达式的有效输入的库.这是一个非常简单的例子,有一个简单的解决方案,例如’x’* 10007将起作用.有可能提出其他正则表达式,这些表达式很难找到有效的输入.

我认为你要解决这个问题的唯一方法是将自己限制在所有可能正则表达式的某个子集中.

但是,如果你有一个神奇的库来生成与任意正则表达式匹配的文本,那么你需要做的就是生成一个匹配所有与原始表达式不匹配的字符串的正则表达式.

幸运的是,这可能是使用否定前瞻:

^(?![\s\S]*(?:^[abcd]d+))

如果您愿意将需求更改为仅允许有限的正则表达式子集,则可以使用布尔逻辑来否定正则表达式.例如,如果^ [abcd] d变为^ [^ abcd] | ^ [abcd] [^ d].然后可以在合理的时间内找到该正则表达式的有效输入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值