给定一个字符串,生成一个可以解析*相似*字符串的正则表达式
例如,给定字符串“2009/11/12”,我想获取正则表达式(“\d{2}/d{2}/d{4}”),所以我也能够匹配“2001/01/02”。
有什么东西可以做到这一点吗?类似的东西?任何想法'关于如何做到这一点?
例如,给定字符串“2009/11/12”,我想获取正则表达式(“\d{2}/d{2}/d{4}”),所以我也能够匹配“2001/01/02”。
有什么东西可以做到这一点吗?类似的东西?任何想法'关于如何做到这一点?
有text2re,一个免费的基于Web的“正则表达式示例”生成器。
不过,我不认为这在源代码中可用。我敢说,没有自动正则表达式生成器可以在没有用户干预的情况下正确运行,因为这需要机器知道您想要什么。
请注意,text2re使用基于模板,模块化和非常通用的正则表达式生成方法。它生成的表达式可以工作,但它们比等效的手工制作的表达式复杂得多。它不是学习正则表达式的好工具,因为它在设置示例方面做得很糟糕。
例如,字符串将被识别为模式,这很有帮助。该工具将其转换为这个125个字符的怪物:"2009/11/12"
yyyymmdd
((?:(?:[1]{1}\d{1}\d{1}\d{1})|(?:[2]{1}\d{3}))[-:\/.](?:[0]?[1-9]|[1][012])[-:\/.](?:(?:[0-2]?\d{1})|(?:[3][01]{1})))(?![\d])
手工制作的等价物仅占其中的五分之二(50个字符):
([12]\d{3})[-:/.](0?\d|1[0-2])[-:/.]([0-2]?\d|3[01])\b
不可能为您的问题编写通用解决方案。麻烦的是,任何生成器可能都不知道您要检查的内容,例如,是否也应该允许“2312/45/67”?“2009.11.12”呢?
你可以做的是自己编写这样一个适合你确切问题的生成器,但一般的解决方案是不可能的。