0

単純なテキストではなく、変数との一致を確認するにはどうすればよいですか。私は試した:

my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if ($_text =~ $_searchingText) {
    print 'yes!';
}
4

3 に答える 3

2

2つのオプション:

  1. $_searchingText正規表現パターンで補間します。

    print 'yes' if $_text =~ /$_searchingText/;
    
  2. $_searchingTextパターンとして宣言する:

    $_searchingText = qr/me/;
    print 'yes' if $_text =~ $_searchingText;
    
于 2012-06-14T12:12:53.483 に答える
1

インデックス関数は、あなたが探していることだけを行うようです(これは、$_searchingText内で「インデックス化」することです$_text)。

これを試して:

#!/usr/bin/perl -w
use strict;

my $_text = 'Please Help me here!';
my $_searchingText = 'me';

if(index $_searchingText, $_text){
    print 'yes!';
}

$_searchingTextまたは、変数を正規表現の一致演算子内に一致させることができます ( ):

#!/usr/bin/perl -w
use strict;

my $_text = 'Please Help me here!';
my $_searchingText = 'me';

if($_text =~ m/$_searchingText/){
    print 'yes!';
}

お役に立てば幸いです。明確にできるかどうか教えてください

于 2012-06-14T12:20:10.113 に答える
1

他の人が指摘したように、正規表現の周りに正規表現マーカーを配置する必要があります。

if ($_text =~ /$_searchingText/) {

そしてそうではない

if ($_text =~ $_searchingText) {

Perl では、文字列や数値だけでなく、正規表現を含むスカラー Perl 変数を使用することもできます。

my $_text = 'Please Help me here!';
my $_searchingText = qr/me/;
if ($_text =~ $_searchingText) {
    print 'yes!';
}

qr演算子は正規表現に含まれる値を作成するため、ステートメント$_searchingTextに区切り記号は必要ありません。ifそれらはオプションです。正規表現の引用符のような演算子を参照してください。

于 2012-06-14T18:59:41.393 に答える