次の質問があります。カンマ(、)で囲まれた文をどのように照合しますか。ただし、文のサイズと単語数は異なる場合があります。例えば:
こんにちは、お元気ですか、さようなら
ありがとう、私はとても元気です、さようなら
だから「お元気ですか」と「とても元気です」を合わせたいです。
$_ =~ /,([\w\s\w\s\w,])/;
しかし、それは非常に間違っているように思われ、スペースで区切られた3つの単語に「おそらく」一致します。
簡単/,(.+?),/
ではないでしょうか?または/,([\w\s]+?),/
、単語とスペースしかないことを確認したい場合は、
my $str = "Hi,How are you,bye";
$str =~ /,([\w\s]+?),/;
print "$1\n";
$str = "Thanks, I am very good,bye";
$str =~ /,([\w\s]+?),/;
print "$1\n";
次に例を示します。
if ($sentence =~ /,(.+?),/g) {
print $1;
}
これは文と一致し、結果をに入れ$1
ます。複数の文がある場合:
while (<>) {
while (/,(.+?),/g) {
print $1;
}
}
これは、標準入力からの入力で、コンマの間の値のみを取得する例です。
(.+?)
長さが0より大きく、コンマではないすべてのものに一致します。そのため、()
に保存され$1
ます。