2

XPathのヘルプが必要です。私はそのようなXMLを持っています:

   <unaryExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
      <postfixExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
        <leftHandSideExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
          <newExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
            <memberExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
              <primaryExpression tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
                <literal tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
                  <stringLiteral tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8">
                    <LITERAL tokenValue="'http://google.com'" tokenLine="1" tokenColumn="8"/>
                  </stringLiteral>
                </literal>
              </primaryExpression>
            </memberExpression>
          </newExpression>
        </leftHandSideExpression>
      </postfixExpression>
    </unaryExpression>

URLを見つける必要があります。私はそうします。

//LITERAL[contains(@tokenValue, 'http://')]

正規表現を使用してURLを見つける方法は?

(http://|https://|ftp://)([a-z0-9]{1})((\.[a-z0-9-])|([a-z0-9-]))*\.([a-z]{2,4})(\/?)
4

1 に答える 1

0

XPath エンジンが XPath 2.0 をサポートしている場合は、正規表現fn:matchesに相当するものを使用してください。fn:containsXPath 1.0 では、正規表現はサポートされていません。

//LITERAL[fn:matches(@tokenValue, '(http://|https://|ftp://)([a-z0-9]{1})((\.[a-z0-9-])|([a-z0-9-]))*\.([a-z]{2,4})(/?)')]

正規表現に一致する<LITERAL/>-tag を持つすべての -tags を返します。@tokenValue

/式に問題があります。最後の一致グループでエスケープする必要はありません (エスケープしない場合もあります) 。クエリでそれを修正しました。とにかく、最後の 2 つの一致グループを使用するのはなぜですか?

于 2013-01-23T14:07:36.277 に答える