gpt4 book ai didi

regex - 如何使用XPath正则表达式匹配URL

转载 作者:行者123 更新时间:2023-12-03 16:54:34 24 4
gpt4 key购买 nike

需要有关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://')]


如何使用正则表达式查找网址?

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

最佳答案

如果您的XPath引擎支持XPath 2.0,请使用fn:matches等效于fn:contains的正则表达式。使用XPath 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与您的正则表达式匹配的 @tokenValue -tag。

表达式中存在一些问题,您不必(也可以不必)逃避最后一个匹配组中的 /。我在查询中解决了这个问题。为什么仍然使用最后两个匹配组?

关于regex - 如何使用XPath正则表达式匹配URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com