基本上有兩種類型的線(簡化)輸出線:Perl的正則表達式來不包含字符
「約翰」(2002)
艾米(1991)
可能有也可能沒有一開始就是標籤。我只想得到不含雙引號的行。到目前爲止,我有
if(/([^\t]*) [\t]+ ^("(.*?)") ([^\t]+ [\ ]* [\(][\d]+[\)])/)
如果我拿出克拉標誌,它會用雙引號抓住行。我希望它做相反的事情,但它不起作用。
基本上有兩種類型的線(簡化)輸出線:Perl的正則表達式來不包含字符
「約翰」(2002)
艾米(1991)
可能有也可能沒有一開始就是標籤。我只想得到不含雙引號的行。到目前爲止,我有
if(/([^\t]*) [\t]+ ^("(.*?)") ([^\t]+ [\ ]* [\(][\d]+[\)])/)
如果我拿出克拉標誌,它會用雙引號抓住行。我希望它做相反的事情,但它不起作用。
^[^"]*$
隨着這讓^ $在行比賽打破
我本來建議環視,但它不是在這裏需要
^((?!").)*$)
它使用了一種名爲positive lookahead的技術,您可以在這裏閱讀http://www.regular-expressions.info/lookaround.html在Perl中獲取數組在字符串中的所有正則表達式匹配使用@result = $ subject =〜m /^(?!").*$/ mg; – buckley 2012-03-22 21:59:55
if(/([^ \ t] *)[\ t] + ^(?!「)。* $([^ \ t] + [\] * [\(] [\ d] + [\)] )/) 像這樣??它不起作用 – user1224478 2012-03-22 22:02:24
@ user1224478不,它只是簡單的正則表達式^(?!「)。* $將只匹配不包含雙引號的行」 – buckley 2012-03-22 22:11:43
我想嘗試這種改性劑(或我簡化太多?):
[email protected]:~$ cat /tmp/x.txt
"John" (2002)
Amy (1991)
[email protected]:~$ perl -ne 'print unless /"/' < /tmp/x.txt
Amy (1991)
你可以簡化(或高爾夫球),以'perl -ne'/「/ ||打印'x.txt' – DavidO 2012-03-22 22:22:10
或unix-golf將它打到'grep -v'''x.txt' :) – 2012-03-22 22:43:53
一個字符'grep -v \「x.txt' – 2012-03-22 23:34:53
試試這個:
if (/^\s*([^"\s]+)\s*\((\d+)\)\s*$/) {
}
如果你已經知道
if (/regex/) { ... }
做你想要做的正好相反,不要試圖找出的/regex/
「對立」是什麼。它更理解使用的if
相反:
unless (/regex/) { ... }
if (!/regex/) { ... }
我想你可以使用!/"/
爲/^[^"]*$/
等效是否需要Perl的是? ''sed'/「/ d'inputfile.txt'' – 2012-03-22 22:04:26