我在文本文件中有一堆字符串,其中包含我想要捕获到组中的值。文本文件中的每一行/每行都是唯一的记录,但这些值通常在每行中都符合规定的格式:
ValueA ValueD ValueS ValueR ValueW ValueT
ValueX ValueW ValueB ValueM ValueQ ValueA
等。如果我想将ValueA
捕获到捕获组1中并将ValueW
捕获到捕获组2中,我是否可以使用一个正确处理事物的正则表达式来执行此操作,而不管值的每行文本中的位置如何问题
目标是然后使用捕获组将两个捕获的值写回文件,以便我可以对它们进行排序,即“ValueW ValueA”。
答案 0 :(得分:1)
您可以使用以下内容:
^(?=.*?(ValueA))(?=.*?(ValueW)).*
Perl示例:
$_ = <<'_STR_';
ValueA ValueD ValueS ValueR ValueW ValueT
ValueX ValueW ValueB ValueM ValueQ ValueA
_STR_
s/^(?=.*?(ValueA))(?=.*?(ValueW)).*/$1 $2/gm;
print;
输出:
ValueA ValueW
ValueA ValueW
注意:如果您只是匹配,则不需要最后.*
,并且根据与ValueX模式的匹配程度,您可以删除所有?
。
答案 1 :(得分:0)
这样的事情可能是:
(?<ValueA>ValueA)|(?<ValueW>ValueW)
答案 2 :(得分:0)
假设它是unix,首先用换行符查找和替换空格,用各种正则表达式管道,然后将组输出到文件中。
答案 3 :(得分:0)
这是正则表达式滥用 - 打电话给警察!
说真的......如果你必须这样做,你可以使用每个组中的或运算符(|)来选择这两个单词中的一个或另一个。