0

$string() = "这是管理费";

我打算做的是用 RegEx 写下一个 X-Path 以返回上面的语句为真,因为当 $string 包含“管理费用”时,该语句返回真。

看,上面的语句可以有以下关键字,

  1. 管理 && 收费 || 收费
  2. 行政&&收费|| 收费
  3. 行政&&收费|| 收费

总而言之,这里的根关键字是“admin”和“charge”。

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

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

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

这仍然只是完全匹配。

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

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

提前致谢

4

2 回答 2

2

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

但是,PHP 使用libxml PHP 扩展来处理其 XML 操作,它仅实现 XPATH 1.0 规范

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

使用 XSLT 2.0 库,可以使用match函数。来自 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")
于 2013-01-14T08:38:09.537 回答
1

将@JWiley 的评论变成答案:

contains($string,'admin') and contains($string,'charge')
于 2013-01-11T18:02:00.043 回答