-1

slash_flash までの最初のパターンだけをキャプチャしたい。

私はこれを試しました:

$var1 = slash_flash*_target_bit[*]_slash_hit\n

$var1 =~ s/^(.*)\*?(.*)$/$1/g if ($var1 =~ /\*/);

文字列全体を取得します。

> $var1 = slash_flash*_target_bit[*]_slash_hit

注: $var1 は何から始めてもかまいません。そのため、特定の単語やパターンでパターン マッチングを開始することはできません。というわけでやってみました(.*)

4

1 に答える 1

2

まず、実際に実行したコードを投稿します。あなたが投稿したものはコンパイルさえされていないので、あなたが言ったことは真実ではありません。

先に進みます。

  • \*?ゼロ文字に一致できます。
  • .*ゼロ文字に一致できます。

したがって、最初.*の文字列が文字列全体に一致する\*?と、.*幸いにもゼロ文字に一致します。

多分あなたがしたい

$var =~ s/^([^*]*)\*.*$/$1/g if ($var1 =~ /\*/);

に短縮することができます

$var =~ s/^([^*]*)\*.*$/$1/;

またはさえ

$var =~ s/^[^*]*\K\*.*$//;
于 2012-06-12T19:40:51.853 に答える