由于某种原因,我需要通过使用替换从某个任意列表生成正则表达式。
假设用户可以输入"cat","dog"并且"!@[]",它将生成"cat|dog|!@\\{\\}"。
问题是,当多个输入包含公共前缀时,我可以使 re 匹配最长的术语吗?
例如:
"god", "godspeed","godzilla"将生成"god|godspeed|godzilla"
如果有多个匹配项,我希望它匹配最长的术语。那是匹配"godspeed"而不是"god"如果我用来re.finditer()匹配字符串"godspeeding"
我在 Python 3.7.1 中尝试过,它似乎根据正则表达式中的顺序报告匹配项。如果这总是正确的,我可以在将输入转换为正则表达式之前对输入(wrt 长度)进行排序。
但是,我找不到有关此行为的任何文档,并且不确定将来是否会改变。
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |