2

これがどのように機能するのか/それが何を意味するのか、私にはよくわかりません...

my ($value) = ($out =~ /currentvalue[^>]*>([^<]+)/);

基本的に、これは CURL/PERL スクリプトの一部であり、www.example.com に移動
<span id="currentvalue"> GETS THIS VALUE </span>
し、ページ html で検索します。

スクリプトの一部は正確に何[^>]*>([^<]+)/)をしますか? span id=".." を探していると定義していますか?

[^>]*>([^<]+)/) 関数の詳細はどこで確認できますか?

4

2 に答える 2

8

/.../akam/.../はマッチ演算子です。そのオペランド ( の LHS 上=~) がリテラル内の正規表現と一致するかどうかをチェックします。演算子はperlopに文書化されています。(「m/PATTERN/」に移動します。) 正規表現はperlreに文書化されています。

ここで使用する正規表現については、

$ perl -MYAPE::Regex::Explain \
   -e'print YAPE::Regex::Explain->new($ARGV[0])->explain' \
      'currentvalue[^>]*>([^<]+)'
The regular expression:

(?-imsx:currentvalue[^>]*>([^<]+))

matches as follows:

NODE                     EXPLANATION
----------------------------------------------------------------------
(?-imsx:                 group, but do not capture (case-sensitive)
                         (with ^ and $ matching normally) (with . not
                         matching \n) (matching whitespace and #
                         normally):
----------------------------------------------------------------------
  currentvalue             'currentvalue'
----------------------------------------------------------------------
  [^>]*                    any character except: '>' (0 or more times
                           (matching the most amount possible))
----------------------------------------------------------------------
  >                        '>'
----------------------------------------------------------------------
  (                        group and capture to \1:
----------------------------------------------------------------------
    [^<]+                    any character except: '<' (1 or more
                             times (matching the most amount
                             possible))
----------------------------------------------------------------------
  )                        end of \1
----------------------------------------------------------------------
)                        end of grouping
----------------------------------------------------------------------
于 2013-11-05T16:30:05.810 に答える
7

これは単純なバニラの Perl 正規表現です。このチュートリアルを参照してください

  /              # Start of regexp  
  currentvalue   # Matches the string 'currentvalue'
  [^>]*          # Matches 0 or more characters which is not '>'
  >              # Matches >
  (              # Captures match enclosed in () to Perl built-in variable $1 
  [^<]+          # Matches 1 or more characters which  is not '<'  
  )              # End of group $1 
  /              # End of regexp
于 2013-11-05T16:30:12.150 に答える