能不能根据原字符串和目标字符串反推正则表达式

nangongxiaobai 2019-06-13 10:38:45
看到有人问正则表达式的问题,产生了一个想法,能不能通过我们的原字符串和目标字符串反推出正则表达式?

实际中经常遇到这种情况,要处理一个字符串,自己心里有个想要的目标字符串,但是一直写不对正则表达式,如果有个工具可以反推出正则表达式,那岂不是大大提到了效率!

往各位大佬给个建议或思路,我想做一个这种工具
...全文
3204 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
MYsce 2019-12-09
  • 打赏
  • 举报
回复
这种工具N前期网上看过有不成熟的作品,但是反推室友N种结果,这种东西太复杂也没什么盈利,所以一般人没这么设计
hzg303 2019-12-06
  • 打赏
  • 举报
回复
楼主说的这种想法的工具,N年前就已经存在,只不过没达到那种完美的程度~~~能生成出一些~~见过一个,不支持中文,如没中文字符的话,是能出来的~~~流传的范围不广~~就象 VBA工程不可查看 这种工具,你找到现成的并不多~~~~~
  • 打赏
  • 举报
回复
说到了“阿尔法狗”下围棋的问题,不管它算不算是真正的人工智能,最起码地,你让阿尔法狗教小学生下围棋试试看?

那个下棋逻辑根本就不是人的思路,而只是机器的思路。那么你说“写出正则表达式”,机器根本不扯什么人的思路,哪管什么正则?
  • 打赏
  • 举报
回复
“能"。

这个答案就好像”人不如猴子“,更多是过嘴瘾!
  • 打赏
  • 举报
回复
你把一只猴子放在电脑前边足够长时间,它也能写出你能写出的每一行代码。有意义吗?
吹风的兔子 2019-06-19
  • 打赏
  • 举报
回复
直觉告诉我,这个应该是可以的。 > 通过 目标string 和 源string —— 可以得到 多个 正则表达式。 > 通过 多个测试样本,获取 正则表达式 的 交集。 楼主,我看好你哦。
  • 打赏
  • 举报
回复
引用 楼主 nangongxiaobai的回复:
看到有人问正则表达式的问题,产生了一个想法,能不能通过我们的原字符串和目标字符串反推出正则表达式?

实际中经常遇到这种情况,要处理一个字符串,自己心里有个想要的目标字符串,但是一直写不对正则表达式,如果有个工具可以反推出正则表达式,那岂不是大大提到了效率!

往各位大佬给个建议或思路,我想做一个这种工具
那得写一千行判断语句吧
wangChao_live 2019-06-17
  • 打赏
  • 举报
回复
引用 4 楼 assky124的回复:
有足够的样本,可以
关键是,感觉好难推。比如我只限定正则几个汉字和几个.如果反推的话这两个都可以实现,如果汉字限定少还可以如果是上万够呛
wangChao_live 2019-06-17
  • 打赏
  • 举报
回复
引用 3 楼 娃都会打酱油了的回复:
不能,通过要求写正则比较容易,通过正则来判断这段正则要干嘛就比较困难了,更别说你通过结果和原始字符串来判断正则该怎么写了
其中正则比如这个.就够你推的了哈哈
茂大叔 2019-06-16
  • 打赏
  • 举报
回复
可以,但是反推出来的不是唯一方案。原则上,通过有限集合反推函数都是无穷解。
threenewbee 2019-06-14
  • 打赏
  • 举报
回复
关键是正则表达式和匹配的字符串不是对应的关系。 任何字符串,都可以反推一个上限 ^.*$ 。 任何字符串,都可以反退一个下限,就是它本身,比如123,可以推出 ^123$ 任何两个字符串,都可以推出一个包含最长公共子串的上限,比如 123和234,可以推出 .*23.* 或者推出一个按位的实现,比如 (1|2)(2|3)(3|4) ... 如果你有n个字符串也是一样,完全可以推导出无穷多个满足它们的正则表达式 困难在于,你要找到一个最简的表达式,而这个最简的表达式要求能把反例过滤掉。
nangongxiaobai 2019-06-14
  • 打赏
  • 举报
回复
引用 13 楼 秋的红果实 的回复:
有点意思,你是想搞个正则2.0版本吗?
有可能不?
Tnbacua 2021-12-15
  • 举报
回复
@nangongxiaobai 来着2021年末的回复:regular expression v999999 max pro plus
秋的红果实 2019-06-14
  • 打赏
  • 举报
回复
有点意思,你是想搞个正则2.0版本吗?
诺维斯基 2019-06-14
  • 打赏
  • 举报
回复
引用 11 楼 nangongxiaobai 的回复:
[quote=引用 9 楼 OrdinaryCoder 的回复:] 能不能根据原字符串和目标字符串反推正则 是一定能的 但是有没有成品 就不知道了 这个我没查过 我觉得楼主既然想到了这个 就可以自己试着写一下 写出来传到git上 估计很多人会用
嗯,难度很大啊,新手写不出来,搞了半天只写了个大小写的反推。。。[/quote] 我好多年前 也有这个想法,一直也没着手去弄,只弄了一个在线测试的网站:http://www.regexp.cn 确实不好弄,感觉只能靠大量的各种各样的正则案例数据,用人工智能深度学习的方式应该还可以。
nangongxiaobai 2019-06-13
  • 打赏
  • 举报
回复
引用 9 楼 OrdinaryCoder 的回复:
能不能根据原字符串和目标字符串反推正则 是一定能的 但是有没有成品 就不知道了 这个我没查过 我觉得楼主既然想到了这个 就可以自己试着写一下 写出来传到git上 估计很多人会用
嗯,难度很大啊,新手写不出来,搞了半天只写了个大小写的反推。。。
nangongxiaobai 2019-06-13
  • 打赏
  • 举报
回复
引用 8 楼 娃都会打酱油了 的回复:
人工智能都是为了商业利益服务,没有利益的东西,谁来花时间研究啊 而且同一种结果,正则写法也可以不同
您说的这是当前的现实,没有利益的东西没人去做。但有些事情有意义的话还是值得做的,比如那些搞理论数学的那些人,写的公式没人给钱,但后来却被别人用到了其他方面,比如加密等。有点跑题了
OrdinaryCoder 2019-06-13
  • 打赏
  • 举报
回复
能不能根据原字符串和目标字符串反推正则 是一定能的 但是有没有成品 就不知道了 这个我没查过
我觉得楼主既然想到了这个 就可以自己试着写一下 写出来传到git上 估计很多人会用
  • 打赏
  • 举报
回复
人工智能都是为了商业利益服务,没有利益的东西,谁来花时间研究啊 而且同一种结果,正则写法也可以不同
nangongxiaobai 2019-06-13
  • 打赏
  • 举报
回复
引用 5 楼 by_封爱 的回复:
这个不太可能.. 这东西非常有年头了. 如果有可能 这种东西早就被别人研究出来了..
以前大家都认为机器下围棋不行,但后来也出来了,这个是不是也可以尝试啊。
Tnbacua 2021-12-15
  • 举报
回复
@nangongxiaobai 需要较强的逻辑,只有牛皮的人才能写出来了
nangongxiaobai 2019-06-13
  • 打赏
  • 举报
回复
引用 3 楼 娃都会打酱油了 的回复:
不能,通过要求写正则比较容易,通过正则来判断这段正则要干嘛就比较困难了,更别说你通过结果和原始字符串来判断正则该怎么写了
现在不是人工智能时代了么,理论上是不是可以把不可能变为可能啊?
加载更多回复(5)

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧