2

現在のページのURLを(page:env( "caller")を使用して)取得し、そのセクションを抽出したいと思います。

例えば、私は取りたいです

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=cats

割り当てます

cats

変数に。

KRLでこれを行うにはどうすればよいですか?

私が試してみました

url = page:env("caller");
query = url.replace("http://www\.google\.com/search\?sourceid=chrome&ie=UTF-8&q=", "");

ただし、page:env( "caller")全体を変数クエリ(例:http ://www.google.com/search?sourceid=chrome&ie=UTF-8&q=cats)に割り当てるだけです。

編集:jQueryソリューションもおそらく機能します。

Edit2:@JAM-

投稿したselectステートメントが機能していないようです。http://www.google.com/search?q=catsでテストしましたが、起動しませんでした。URLがページビューと一致しないかどうか、または何と一致するかわからない(私と一致するはずのようです)。

私が入れたアプリ:

ruleset a835x36 {
  meta {
    name "regex testing2"
    description <<
 >>
author ""
logging on
}

rule get_query {
    select when pageview "http://www.google.com/search.*(?:&|?)q=(\w+)(?:&|$)"    setting(query) 
      notify("Query",query) with sticky = true;
   }
}

また、Googleにはhttp://www.google.com/search?qのように見えないURLを含む検索結果ページにアクセスする方法がたくさんあるので、クエリを取得するためのより堅牢な方法を探しています。 =猫。たとえば、Googleにアクセスして猫を検索すると、http://www.google.com/webhp?hl = en#sclient = psy&hl = en&site = webhp&source = hp&q = cats&aq = f&aqi =&aql =&oq =&gs_rfai =&pbx=結果のURLは1&fp=8ac6b4cea9b27ecb 。正規表現で何でも解析できると思いますが...

4

2 に答える 2

5

あなたが望むことを達成するための2つの方法。

1)プレブロック

pre {
  queryInURL = page:url("query");
  q = queryInURL.replace(re/.*?q=(.*?)(?:$|&.*)/,"$1");
}
  • page:url( "query")は、URL内のパラメーターの文字列全体を取得します
  • 文字列置換を実行して、必要な特定のクエリパラメータをキャプチャします

テストされたアプリの完全な例

URLでテスト済み-> http://example.com/?q=cats&wow=cool

代替テキスト

ruleset a60x439 {
  meta {
    name "url query test"
    description <<
      Getting the query from the current page URL
    >>
    author "Mike Grace"
    logging on
  }

  rule get_query {
    select when pageview ".*"
    pre {
      queryInURL = page:url("query");
      q = queryInURL.replace(re/.*?q=(.*?)(?:$|&.*)/,"$1");
    }
    {
      notify("Query",queryInURL) with sticky = true;
      notify("q",q) with sticky = true;
    }
  }

}

2)ルール選択式でJAMが示した方法

于 2010-11-29T21:28:48.893 に答える
4

これは、正規表現とキャプチャグループ(())を使用してselectステートメントで実行できます。

select when pageview "http://www.google.com/search.*(?:&|?)q=(\w+)(?:&|$)" setting(query)

正規表現はselectステートメントを強力にします。必ず学んでください!これが優れた正規表現(またはRegex)サイトです

于 2010-11-29T21:14:50.330 に答える