基本上有两种类型的线(简化):
“John”(2002)
Amy(1991)
开头可能有也可能没有标签。我想只得到不包含双引号的行。到目前为止我已经
了if( /([^\t]*) [\t]+ ^("(.*?)") ([^\t]+ [\ ]* [\(][\d]+[\)])/)
如果我取出克拉标志,它会用双引号抓住线条。我希望它做相反的事情,但它不起作用。
答案 0 :(得分:3)
我会尝试这个(或者我会简化太多吗?):
jj@ubuntu:~$ cat /tmp/x.txt
"John" (2002)
Amy (1991)
rc@ubuntu:~$ perl -ne 'print unless /"/' < /tmp/x.txt
Amy (1991)
答案 1 :(得分:1)
^[^"]*$
使用修饰符让^ $在换行符匹配
我最初建议环顾,但这里不需要
^((?!").)*$)
答案 2 :(得分:0)
试试这个:
if (/^\s*([^"\s]+)\s*\((\d+)\)\s*$/) {
}
答案 3 :(得分:0)
如果您已经知道
if (/regex/) { ... }
与你想做的事情相反,不要试图找出/regex/
的“对立面”是什么。使用if
:
unless (/regex/) { ... }
if ( !/regex/ ) { ... }
答案 4 :(得分:0)
我认为你可以使用!/"/
作为/^[^"]*$/