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

标签 python regex validation

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

例如:

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/

相关文章:

JavaScript 拆分而不丢失字符

javascript - 评论超出范围的正则表达式

MySQL - 查询将 1 个字段的部分内容移动到新字段

ruby-on-rails - 如何显示 Rails 中关联模型的验证错误?

python - 如何使用 linkchecker 忽略包含图像格式的 URL

python - 从 Python 的角度学习 Perl

validation - 如何在 Go 中处理控制台输入类型验证?

forms - Symfony 2 Doctrime 2 和表单验证(唯一字段)

python - 使用 CV 从图像中提取树数

python - pandas DataFrame.to_string() 从列中截断字符串