-1

A.CC3何かで始まり、その後に何か、私のもの、そして何かが続く行で一致するperl正規表現が必要'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 に答える