regex - 正则表达式 : Extract the lines

标签 regex

我尝试使用正则表达式提取 name1(第一行)、name2(第二行)、name3(第三行)和街道名称(最后一行):

Company Inc.
JohnDoe
Foobar
Industrieterrein 13

最后一行是街道名称,这部分已经开始工作了(文本存储在变量“S2”中)。

REGEXREPLACE(S2, "(.*\n)+(?!(.*\n))", "")

这个表达式将返回最后一行。我还可以提取第一行:

REGEXREPLACE(S2, "(\n.*)", "")

我的问题是,我不知道如何提取第二行和第三行....

另外,我如何测试文本是否包含一行、两行、三行或更多行?

更新:

正则表达式用于 Scribe(一种 ETL 工具)的上下文中。问题是我无法执行源代码,我只有以下功能:

  • REGEXMATCH(输入,模式)
  • REGEXREPLACE(输入、模式、替换)

最佳答案

如果正则表达式语言提供对前瞻的支持,您可以向后计算行数,从而得到(假设 . 不匹配换行符)

(.*)$                   # matching the last line
(.*)(?=(\n.*){1}$)      # matching the second last line (excl. newline)
(.*)(?=(\n.*){2}$)      # matching the third last line (excl. newline)

关于regex - 正则表达式 : Extract the lines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786680/

相关文章:

regex - mksquashfs 不排除文件

regex - 在 Perl 中使用正则表达式时,tr///和 s///有什么区别?

regex - 来自 readlines() 的 Groovy 正则表达式匹配列表

Javascript正则表达式匹配相对单位

Javascript 正则表达式 - 从字符串中获取函数名称

regex - 在最后一个匹配后添加一行和字符

objective-c - 分割字符串搜索模式 Objective-C

javascript - 正则表达式检测前导零并检查 0 到 12 位数字的长度

regex - 如何在字节上使用 Rust 正则表达式(Vec<u8> 或 &[u8])?

javascript - 以空格开头的字符串的正则表达式