我是Perl的初学者,但我确实了解正则表达式。
现在我遇到了问题,因为我不知道我应该用Perl做我想要的语法。
在RE I' m制作中,我需要命名一个组(仅由一个字符组成),然后在嵌入代码中使用它来查看该字符是否等于' a'例如,如果是if语句应该用于匹配我想要的...
我认为语法是这样的:
(echo base; echo case;) | perl -ne 'print if /^ *(?<char>[^*\/#" ])(?(?{<char> eq c})ase)/'
在此示例中,我想匹配字符串大小写,但它匹配任何字符,后跟 ase (如 base ,在例)。这真是令人沮丧......
任何有更多Perl经验的人都能告诉我正确的方法吗?
非常感谢!
编辑:在示例中,我想评估组 char 。它应该只匹配 char ==&#39; c&#39;如果这是真的,那么&#39; ase&#39;将用作条件的IF语句,因此匹配情况,但不是基数...
答案 0 :(得分:1)
您无法使用(?{ code })
更改匹配结果,因为它永远不会为假(perlre):
此零宽度断言评估任何嵌入的Perl代码。它总是成功,[...]
答案 1 :(得分:0)
嗯,我想嵌入的if-then-else语句如下所示。
(echo qwert; echo base; echo case;) | perl -ne 'print if /^ *(?<char>[^*\/#" ])(?(?{$+{char} eq c})ase|_x_x_x_)/'
此命令仅匹配单词案例,并将 qwert 和 base 保留。
我还必须添加一个永远不会匹配的else语句,我能够按预期评估命名组 char 的内容。