我尝试使用正则表达式提取name1(第一行),name2(第二行),name3(第三行)和street-name(last-row):
Company Inc.
JohnDoe
Foobar
Industrieterrein 13
最后一行是街道名称,此部分已经工作(文本存储在变量“S2”中)。
REGEXREPLACE(S2, "(.*\n)+(?!(.*\n))", "")
这个表达式将返回最后一行。我也能够提取第一行:
REGEXREPLACE(S2, "(\n.*)", "")
我的问题是,我不知道如何提取第二行和第三行......
另外,我如何测试文本是否包含一行,两行,三行或更多行?
更新:
正则表达式用于Scribe(ETL工具)的上下文中。问题是我无法执行源代码,我只有以下功能:
REGEXMATCH(input, pattern)
REGEXREPLACE(input, pattern, replacement)
答案 0 :(得分:3)
如果正则表达式语言提供对前瞻的支持,您可以向后计数行,从而得到(假设.
与换行符不匹配)
(.*)$ # matching the last line
(.*)(?=(\n.*){1}$) # matching the second last line (excl. newline)
(.*)(?=(\n.*){2}$) # matching the third last line (excl. newline)
答案 1 :(得分:1)
对于与四行中的每一行匹配的正则表达式,具体如何:
(.*?)\n(.*?)\n(.*?)\n(.*)
括号将匹配,\ n将匹配新行。注意:您可能必须使用\r\n
而不仅仅是\n
;试试这两个。
答案 2 :(得分:1)
只需使用此正则表达式:
(.+)+
解释
的
.
强> 的 通配符:匹配除\n
之外的任何单个字符。的
+
强> 的 匹配前一个元素一次或多次。
答案 3 :(得分:0)
您可以尝试以下操作:
((.*?)\n){3}