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