-1

我需要一个 perl 正则表达式来匹配A.CC3以某事物开头的行,然后是任何事物,然后是我的事物,'A.CC3 "然后是任何事物......

我很惊讶这(text =~ /^\W+\CC.*\A\.CC\[3].*/)不起作用

谢谢

4

4 回答 4

4

\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 后跟任何事”真的只需要第一个简单的正则表达式。

于 2013-10-21T12:21:50.283 回答
1

看起来你并没有试图捕捉任何东西。如果是这种情况,您需要做的就是找到包含的行,A.CC3那么您可以简单地做

if ( index( $str, 'A.CC3' ) >= 0 ) # Found it...

不需要正则表达式。

于 2013-10-21T12:26:30.633 回答
0

试一试:

^.*?A\.CC.*$

这将匹配任何内容,直到它到达 A,然后是文字 .,然后是 CC,然后是任何内容,直到字符串结尾。

于 2013-10-21T12:21:49.063 回答
0

这取决于你想匹配什么。如果你想拉回出现 A.CC3 模式的整行,那么这样的事情应该可以工作:

^.*A\.CC3.*$
于 2013-10-21T12:26:25.760 回答