我想知道是否有任何Python包来检测字符串中的正则表达式。从概念上讲,这很容易做到,但我想看看是否还有其他人解决了这个问题。
就我自己环顾四周而言,我已经阅读了重新包文档并且没有找到它,我读了Stack Overflow上找到的最好的点击,但也找不到。我用谷歌搜索它,我发现的命中是如何使用正则表达式来解析字符串。我已经通过PyPI进行了搜索,但我能找到的唯一一个是'regexgen 1.0'并且它似乎没有任何领先地位......
要清楚,我正在寻找的是:
def detect_regex(some_string):
[does stuff..]
return regular_expression
我们将非常感谢您的想法。如果没有,我可以自己写。我只是不想浪费时间重新创造已经完成的工作。谢谢!
编辑:
在我的问题中,我可能不太清楚;正则表达式'foo'匹配字符串'foo',但我的目标如下 - 给定值为foo123abc
,abc078963bar
和xyz8940baz
的三个字符串,返回值为{ {1}} ...假设。所以正则表达式在某种程度上是“一般的”。
答案 0 :(得分:0)
非常有限,但有点乐趣。只处理alpha和数字。也很好奇。
def auto_re(text):
cur = first = str.isalpha(text[0])
count = 0
for letter in text:
if str.isalpha(letter) != cur:
cur = not cur
count += 1
modes = ["[0-9]+", "[a-z]+"]
return "^" + modes[first] + (count/2) * (modes[not first ] + modes[first]) + (count%2) * (modes[not first]) + "$"
tests = ["foo123abc", "abc078963bar", "xyz8940baz", "1a", "a1", "1a2b3c", "a12b3c"]
for test in tests:
print "%-20s %s" % (test, auto_re(test))
提供以下输出:
foo123abc ^[a-z]+[0-9]+[a-z]+$
abc078963bar ^[a-z]+[0-9]+[a-z]+$
xyz8940baz ^[a-z]+[0-9]+[a-z]+$
1a ^[0-9]+[a-z]+$
a1 ^[a-z]+[0-9]+$
1a2b3c ^[0-9]+[a-z]+[0-9]+[a-z]+[0-9]+[a-z]+$
a12b3c ^[a-z]+[0-9]+[a-z]+[0-9]+[a-z]+$