我有一个多记录csv文件(无CRLF),因此在导入时它是一个单独的字符串。 导入文件后,我试图获取一组记录。
我希望正则表达式在Foo上匹配然后捕获不是Foo的所有内容
我假设这会给我一个记录的匹配集合,然后我可以处理。
我已经和RegexBuddy在SO上的各个帖子中尝试“消极的向前看”,但我无法弄明白。
我想我根本不理解“除了foo之外捕获任何东西”的构造
答案 0 :(得分:1)
这个正则表达式匹配Foo
以及下一个Foo
的所有内容,但不包括:
(Foo|Bar)(.*?)(?=Foo|Bar|$)
请参阅live demo。
“非Foo”部分将在第1组中。
这里的关键是:
.*?
是一个不情愿的量词 - 它仍然在匹配时尽可能地消耗 little - 需要避免在输入中消耗掉所有内容直到最后一个Foo (?=Foo|$)
预览Foo
或输入结束,因此最后一条记录不是后跟{{ 1}},也匹配。向前看不要消耗输入,所以下一个Foo
会留在输入中,为下一场比赛做好准备。