我有这样的文本文件:
xyz
123. sometext1
233. sometext2
908. sometext3
abc
事情是没有。 xyz
和abc
之间的行可以是变量。但这些都遵循相同的指定模式。我想独立捕捉这些线。可能吗?如果是,怎么样?
以下正则表达式是匹配的,但我不明白如何引用替换中的匹配:
xyz\r\n((\d{3}). (.*)\r\n)+abc
答案 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