我如何捕获这些变量no。使用正则表达式的行?

时间:2014-03-25 12:42:31

标签: regex

我有这样的文本文件:

xyz
123. sometext1
233. sometext2
908. sometext3
abc

事情是没有。 xyzabc之间的行可以是变量。但这些都遵循相同的指定模式。我想独立捕捉这些线。可能吗?如果是,怎么样?

以下正则表达式是匹配的,但我不明白如何引用替换中的匹配:

xyz\r\n((\d{3}). (.*)\r\n)+abc

2 个答案:

答案 0 :(得分:1)

我不知道你正在使用什么替换机制,但是,你应该能够通过使用美元符号符号($)来访问替换语句中的匹配组。组号(从1开始)。简而言之,$1代表\d段,依此类推。

您的正则表达式可能存在的问题是:(\d){3}。这将创建3组,每组1位,我不认为你是在追求什么。如果是这种情况,只需将其替换为以下内容:(\d{3})即可。

答案 1 :(得分:1)

这是一种perl方式:

perl -anE 'say $1 if((/xyz/ ... /abc/) and /^(\d+)/)' in.txt

其中in.txt是:

000. sometext0
xyz
123. sometext1
233. sometext2
908. sometext3
abc
456. sometext4

<强>输出:

123
233
908