正则表达式选择多行字符串中的最后一行

Posted

技术标签:

【中文标题】正则表达式选择多行字符串中的最后一行【英文标题】:Regex to select last line in a multi-line string 【发布时间】:2012-01-01 00:10:14 【问题描述】:

我有一个 ANT 脚本,它有一个属性,其值可以是一行或多行,例如 属性

prop1=
A_12.1_REL_B121000_10_18_2011.1700
A_12.1_REL_B121001_10_25_2011.6059
A_12.1_REL_B121001_10_25_2011.2201
A_12.1_REL_B121001_10_25_2011.2014

请注意,所有这些行都以 CRLF 结尾,并且文件结尾也是另一个 CRLF。现在我需要做的就是使用正则表达式选择最后一行。行数可以更少或更多,例如

prop1=
    A_12.1_REL_B121000_10_18_2011.1700  

在第二种情况下,我需要选择这一行。 我已经搜索过较旧的帖子,但找不到任何具体的内容。有什么指点吗?

【问题讨论】:

【参考方案1】:

应该这样做...

/^.*\z/m

See it in action.

(假设m 是多行模式。)

【讨论】:

非常感谢..我看到了你的答案,但只需要在我的脚本中检查它以接受它作为答案。另外,我无法找出这个有什么问题' \b(\w|\.)+(\s)$'. 这个在 ANT 中不起作用。虽然 FailedDev 提供的那个对我有用。感谢您对 \z/m 的了解。【参考方案2】:

如果您使用的是ant-contrib:

    <loadfile srcFile="input.prop" property="test"/>

    <propertyregex property="result"
                   input="$test"
                   regexp="(.*$)"
                   select="\1"
    />

    <echo message="Result is : $result"/>

这将始终打印输入属性文件的最后一行:

[echo] Result is : A_12.1_REL_B121001_10_25_2011.2014

【讨论】:

SUPER.. 即使我在运行时从 exec cleartool 命令生成属性,这也有效。干杯

以上是关于正则表达式选择多行字符串中的最后一行的主要内容,如果未能解决你的问题,请参考以下文章

Vim:当使用 \_ 匹配多行字符串时。在正则表达式中, :yank 命令仅适用于第一行

匹配 AWK 中多行的正则表达式。 && 操作员?

正则表达式选择 div 中的所有内容

如何在正则表达式中匹配多行中的任何字符?

Python re正则表达式速查

正则表达式如何匹配多行的所有任意字符