gpt4 book ai didi

python - 确定任何正则表达式的输入类型

转载 作者:行者123 更新时间:2023-11-28 19:26:46 25 4
gpt4 key购买 nike

我有一长串应该测试的正则表达式。我不想一个一个地浏览列表并为每个表达式编写适用的测试 - 如果可能的话 - 我想创建一个生成器函数来考虑正则表达式的类型并生成相关的输入字符串。

例如:

rgx = re.compile(r'^item_(?P<item_number>\d+)$')

是否可以确定正则表达式匹配的输入类型?考虑到上面的例子,是否可以从编译的正则表达式中确定正则表达式需要的输入(如item_23​​567)?

最佳答案

这个答案很好地抽象地定义了问题: https://stackoverflow.com/a/208112/1092724

Python 解决方案: Reversing a regular expression in Python

Java 库解决方案: http://code.google.com/p/xeger/

这些解决方案并非没有限制:参见 http://code.google.com/p/xeger/wiki/XegerLimitations

摘自 Xeger 限制页面上的评论

"it is worth noting that the current implementation of xeger randomly traverses an fsm to generate its strings. if you have regular expressions with characters to match after a ., transitions are added back to the state for . for every single state afterwards. it becomes increasingly improbable with each state after the .* that xeger will ever reach an accepting state."

(@Highly Irregular)在他们的评论中表达了类似的担忧。

这是您会发现的所有实现中的一个共同主题。这些解决方案仅适用于精心构造的表达式。否则您的代码可能会进行无限的旅程,永远找不到您要找的东西。如果您确实需要定期且明确定义的内容,那么这些方法之一可能适合您。

关于python - 确定任何正则表达式的输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928119/

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