我有一些文字跟随下面的模式:
一些带有许多空格的文本[方括号内的一些文字]。
我想要一个正则表达式,匹配最后一个空格字符后面的单词,以及开始方括号之前的单词。在这个例子中,它将是“空格”。
在此online tester上尝试此正则表达式。* \ s(。*)\ [后,我尝试使用Perl内联
$ cat file-containing-pattern.txt | perl -ne "print $1 if s/.*\s(.*)(\[)/\1/"
但它打印出来:
方括号内的空间文本]。
如何解决这个问题?
答案 0 :(得分:2)
四个问题:
$1
。\1
,这没有任何意义。修正:
perl -nle'print $1 if / \s ( [^\s\[]+ ) \[ /x' file
答案 1 :(得分:0)
你得到匹配并替换困惑。匹配是正确的,你用捕获组1重新进行。但是,您不会在第2组和第34组之后替换文本,([)"。
你想要匹配并打印
cat file-containing-pattern.txt | perl -ne 'm/.*\s(.*)\[/ and print $1;'
或者您可以替换匹配以外的所有内容
cat file-containing-pattern.txt | perl -pe 's/.*\s(.*)\[.*/$1/;'