使用RegEx + XPath检查2个关键字

时间:2013-01-11 14:11:22

标签: php regex xpath

$ string()=“这是管理费”;

我打算用RegEx写下一个X-Path来返回上面的语句,因为当$ string包含“admin charge”时,语句返回true。

请参阅上述声明可以包含以下关键字

  
      
  1. admin&&充电||电荷
  2.   
  3. 行政与&&充电||电荷
  4.   
  5. 管理&&充电||电荷
  6.   

请注意,所有和所有这里的root关键字都是“admin”和“charge”。

因此,我想编写一个包含X-Path和RegEx的脚本。

以下是我到目前为止的方法,

contains(upper-case(normalize-space($string)), "ADMIN CHARGES")

这仍然只是完全匹配。

我研究过,但主要是检查单个关键字,比如

contains(upper-case($string), "^[m/ADMIN CHARGE/]"

提前致谢

2 个答案:

答案 0 :(得分:2)

正则表达式函数是XPATH 2.0语法的一部分。

但是,PHP使用libxml PHP extension来处理其XML Manipulation,它实现了XPATH 1.0 spec only

This answer显示了使用PHP / Java Bridge和Saxon的替代方案。它可能是目前最好的选择。

使用XSLT 2.0库,可以使用matches函数。来自TFM:

fn:matches($input as xs:string?, $pattern as xs:string) as xs:boolean
fn:matches( $input   as xs:string?,
            $pattern     as xs:string,
            $flags   as xs:string) as xs:boolean



matches(., "admin\S*\scharges?", "i")

答案 1 :(得分:1)

将@ JWiley的评论转变为答案:

contains($string,'admin') and contains($string,'charge')