0

href 属性を持つすべての「a」要素を次の形式で取得したい: http(s)://any.example.com ここで、any は文字や数字のみを含む文字列にすることができます。私は正規表現とXPathが初めてなので、正しく理解できません。正規表現を理解しましたが、100% 正しいかどうかはわかりません: コード:

/(http|https)://+[A-Za-z0-9]+\.example+\.+com/

したがって、XPath は次のようになります。 コード:

document.evaluate( "//a[@href='/(http|https)://+[A-Za-z0-9]+\.google+\.+com/']" , document , null , XPathResult.ORDERED_NODE_SNAPSHOT_TYPE , null );

しかし、うまくいきません。

誰かが私を助けてくれれば幸いです。

4

2 に答える 2

1

現在、ブラウザーは現在 XPATH 2 をサポートしていないようです。属性に対する正規表現の適用は、XPATH 2.0 でのみサポートされています。

XPATH 1.0 (正規表現なし) を使用して要素をフィルタリングした後に正規表現を適用し、要素を反復処理して、代わりに JS レベルの正規表現を使用して要素をさらにフィルタリングします。

参考文献:

  1. https://stackoverflow.com/a/21405499/211794
  2. https://stackoverflow.com/a/6282877/211794
  3. https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate#Browser_compatibility
于 2015-08-02T16:47:17.737 に答える
0

あなたの正規表現は少しずれており、過度に複雑です。
これを試して:

https?://[A-Za-z0-9]+\.example\.com/
于 2011-07-27T10:45:35.270 に答える