【发布时间】:2015-03-31 23:55:24
【问题描述】:
我是 Perl 的初学者,但我确实知道如何使用正则表达式。
现在我遇到了一个问题,因为我不知道在 Perl 中应该使用什么语法来做我想做的事情。
在我正在制作的 RE 中,我需要命名一个组(仅由一个字符组成),然后在嵌入的代码中使用它来查看该字符是否等于“a”,例如,如果它是否应该使用 if 语句来匹配我想要的...
我认为语法应该是这样的:
(echo base; echo case;) | perl -ne 'print if /^ *(?<char>[^*\/#" ])(?(?{<char> eq c})ase)/'
在本例中,我想匹配字符串 case,但它匹配任何后跟 ase 的字符(如 base,在例子)。这真是令人沮丧...
任何对 Perl 有更多经验的人可以告诉我正确的方法来获得这个条件吗?
非常感谢!
编辑:在示例中,我想评估组 char。它应该只匹配具有 char == 'c' 的行,如果是这样,那么 'ase' 将用作条件中的 IF 语句,因此匹配大小写,但不匹配基础。 ..
【问题讨论】:
-
我想发明一把刀,让我做一个鸡肉咖喱三明治。也许您应该只编写常规代码来完成这项工作?或者更清楚地说明您需要做什么,以及一些测试用例。
-
您可以使用前瞻断言来检查特定字符的存在,例如
(?=c) -
这会有点落后,但我无法让它工作,因为我需要评估组
匹配的内容... -
我在一个更复杂的脚本中使用了这个概念。这是我能想出的最简单的例子来描述我的问题......脚本已经工作了,但有时我需要检查我是否已经匹配了示例中的第一个字符,在这些情况下,RE 无法表现为它应该...