我想使用python3生成与正则表达式匹配的字符串。为此,我使用了名为rstr的便利库。你知道吗
^[abc]+.
[a-z]+
我必须找到一个通用的方法,如何创建字符串将匹配我的两个正则表达式。你知道吗
修改两个正则表达式或以任何方式连接它们。我认为这是无效的解决方案,特别是在不兼容正则表达式的情况下:
import re
import rstr
regex1 = re.compile(r'^[abc]+.')
regex2 = re.compile(r'[a-z]+')
for index in range(0, 1000):
generated_string = rstr.xeger(regex1)
if re.fullmatch(regex2, generated_string):
break;
else:
raise Exception('Regexes are probably incompatibile.')
print('String matching both regexes is: {}'.format(generated_string))
有什么解决方法或者魔法库可以处理这个问题吗?感谢您的真知灼见。你知道吗
Asker已经有了这个字符串,他只想用最优雅的方式检查多个regex。在我的例子中,我们需要以一种与regex匹配的智能方式生成字符串。你知道吗
如果你想要真正通用的方法,你不能真正使用暴力方法。你知道吗
您需要的是创建regexp的某种表示(就像rstr通过调用sre所做的那样)_解析.py)然后调用SMT求解器来满足这两个条件。你知道吗
对于Haskell,有https://github.com/audreyt/regex-genex使用Yices SMT solver来实现这一点,但我怀疑Python是否有类似的功能。如果我是你,我会咬紧牙关把它称为python程序中的外部程序。你知道吗
我不知道是否有什么东西能满足你的需要。 但我会这样做(就像你已经做过的那样):
也许您可以创建一个函数并将两个regex作为参数传递,然后使用相同的逻辑测试“2乘2”。你知道吗
如果你有8个正则表达式要匹配。。。 只要做:
我用另一种方法解决了这个问题。注意,第二个regex基本上是保险的,所以在我们的新字符串中只生成小写字母。你知道吗
我使用了Google的python包sre_yield,它允许字符集限制。包也可以在PyPi上获得。我的代码:
相关问题 更多 >
编程相关推荐