我需要一个 perl 正则表达式来匹配A.CC3
以某事物开头的行,然后是任何事物,然后是我的事物,'A.CC3 "
然后是任何事物......
我很惊讶这(text =~ /^\W+\CC.*\A\.CC\[3].*/)
不起作用
谢谢
\A
是一个转义序列,表示行的开头,或者^
类似于正则表达式的开头。删除反斜杠以使其与文字匹配A
。
编辑:你似乎\C
也在那里。您应该只使用反斜杠来转义元字符,例如句点.
,或创建转义序列,例如\Q .. \E
.
最简单的匹配正则表达式A.CC3
是
$text =~ /A\.CC3/
这就是你所需要的。这将匹配其中A.CC3
的任何字符串。在您提到您要匹配的字符串的评论中是这样的:
my $text = "//%CC Unused Static Globals, A.CC3, Halstead Progam Volume";
您可能希望避免部分匹配,在这种情况下您可以使用单词边界\b
$text =~ /\bA\.CC3\b/
您可能要求一行以//%
$text =~ m#^//%.*\bA\.CC3\b#
当然,只有你知道应该匹配字符串的哪些部分以及以什么方式匹配。“某事后跟任何事,然后是 A.CC3 后跟任何事”真的只需要第一个简单的正则表达式。
看起来你并没有试图捕捉任何东西。如果是这种情况,您需要做的就是找到包含的行,A.CC3
那么您可以简单地做
if ( index( $str, 'A.CC3' ) >= 0 ) # Found it...
不需要正则表达式。
试一试:
^.*?A\.CC.*$
这将匹配任何内容,直到它到达 A,然后是文字 .,然后是 CC,然后是任何内容,直到字符串结尾。
这取决于你想匹配什么。如果你想拉回出现 A.CC3 模式的整行,那么这样的事情应该可以工作:
^.*A\.CC3.*$