3
我試圖刪除一堆文件SGF所有的意見,並都拿出了下面的Perl命令:Perl不匹配正則表達式?
perl -pi -e 's/P?C\[(?:[^\]\\]++|\\.)*+\]//gm' *.sgf
我想匹配,並且刪除C或PC後跟一個左括號,然後是不是右括號的字符(如果它們是必須用\
轉義),然後右括號。
我試圖符合以下例子:
C[HelloBot9 [-\]: GTP Engine for HelloBot9 (white): HelloBot version 0.6.26.08]
PC[IA [-\]: GTP Engine for IA (black): GNU Go version 3.7.11
]
C[person [-\]: \\\]]
C[AyaMC [3k\]: GTP Engine for AyaMC (black): Aya version 6.61 : If you pass, AyaMC
will pass. When AyaMC does not, please remove all dead stones.]
而且一些例子,不應該匹配:
XYZ[Other stuff \]]
C[stuff\]
PC[stuff\\\]
正則表達式工作在幾個網上正則表達式測試(包括少數國家,他們都是perl正則表達式測試器),但由於某種原因沒有在命令行中運行。幫助表示讚賞。
我看過的在線正則表達式測試人員都使用PCRE,而不是Perl正則表達式,所以結果不會n永遠是一樣的。另外,'/ m'修飾符是沒用的,因爲您不使用任何'^'或$''錨點;見[perlre](http://perldoc.perl.org/perlre.html#*m*)。 – ThisSuitIsBlackNot
@ThisSuitIsBlackNot啊,這樣做更有意義。我仍然不知道如何完成這項工作。 – eukaryote
當我在第一組示例上運行代碼時,它可以正常工作。你能創建一個[mcve]嗎? – ThisSuitIsBlackNot