如何使用正则表达式自下而上搜索?

2024-10-02 02:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我要搜索的文本文件类型的示例(名为usefile):

码头拟声词 停靠废话
废话码头废话
停靠
废话连篇
拟声词
废话连篇
废话坞
停靠废话
停靠废话
拟声词

我使用finditer语句查找DOCK和拟声词之间的所有内容,如下所示:

re.finditer(r'((dock)(.+?)(onomatopoeia))', usefile, re.I|re.DOTALL)

显然Dock是一个比拟声词更常见的词,我只想在Dock的第一个实例之间抓取拟声词之前的文本。我在上面使用的regex在Dock的第一个实例之间抓取文本,当它遇到拟声时停止,所以当我真正想要Dock拟声时,我可能会得到Dock Dock Dock拟声词。在

我想说清楚的是:
1码头拟声词
2DOCK-blah-blah拟声词
三。杜克布拉拟声词

有没有一种方法可以搜索拟声词并上到被告席的第一审,或者有更好的方法来解决我的问题?在

谢谢!在


Tags: 实例方法文本re示例类型码头blah
2条回答

这是一种算法方法:

  • 设置推送==false。在
  • 把你的文章分成几个单词(例如字母的跨度)并在这些单词上循环。在
  • 在碰到一个DOCK并push==false时,将其推到堆栈上并设置pushing=true
  • 如果你打小野。。。pushing==true,打印出堆栈上的所有内容加上ono…,然后清除堆栈并设置pushing=false。在
  • 任何其他单词,如果pushing==true,就推它。在
  • DOCK,如果pushing==true,清除堆栈,然后推新DOCK。在

一个消极的前瞻性断言就可以做到这一点。在

DOCK((?!DOCK).)+?onomatopoeia

相关问题 更多 >

    热门问题