gpt4 book ai didi

regex - 如何以编程方式学习正则表达式?

转载 作者:行者123 更新时间:2023-11-30 08:50:18 26 4
gpt4 key购买 nike

我的问题是this one的延续。基本上,我有一个像这样的单词表:

HAT18178_890909.098070313.1
HAT18178_890909.098070313.2
HAT18178_890909.143412462.1
HAT18178_890909.143412462.2

就我的目的而言,这组名称不需要终端 .1.2。我可以手动编写以下正则表达式(使用 Python 语法):

r = re.compile('(.*\.\d+)\.\d+')

但是,我不能保证我的下一组名称将具有类似的结构,其中最后 2 个字符将被丢弃 - 它可能是 3 个字符(即 .12),并且分隔符可能会更改以及(即 ._)。

显式学习正则表达式或确定哪些字符是不必要的适当方法是什么?

最佳答案

这是一个有趣的问题。

X                                  y
HAT18178_890909.098070313.1 HAT18178_890909.098070313
HAT18178_890909.098070313.2 HAT18178_890909.098070313
HAT18178_890909.143412462.1 HAT18178_890909.143412462
HAT18178_890909.143412462.2 HAT18178_890909.143412462

问题在于解决方案不是单一的,而是很多

即使对于人类来说,也不清楚您想要的正则表达式应该是什么。

根据这些数据,我认为学习的可能性是:

只需匹配固定宽度 25:.{25}

修复了第一部分:HAT18178_890909。

然后:

每个点上只有 2 个不同的数字(如您展示的 2 个案例)。所以例如[01](0 或 1)、[94] 下一个位置等等将是一个很好的解决方案。

最明显的是\d+

但也可能是\d{9}

你看,有多个正确答案。

如果第二点是下划线,这些正则表达式仍然可以工作。

我的结论:

问题在于,为机器学习准备数据比创建正则表达式要多得多的工作。如果您想确保涵盖所有内容,则需要拥有完整的数据,因此正则表达式可能会更省力。

关于regex - 如何以编程方式学习正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363129/

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