如果你有一个String,我们假设:AB--AB
。我想查找具有xpath的节点,该节点可以是AB??AB
,这意味着节点属性中的问号是某种占位符 - 并且它们的出现次数可能不同,因此它也应该匹配到例如AB?-AB
。
你怎么解决这个问题?
答案 0 :(得分:2)
XPath 2.0具有正则表达式支持:matches($string, 'AB.{0,2}AB')
匹配,如果字符串是文字AB
的序列,后跟零,一个或两个任意字符后跟文字AB
。
答案 1 :(得分:2)
使用XPath 1.0,您必须坚持使用substring(....)
,substring-before(....)
,substring-after(....)
,starts-with(...)
和string-length(...)
。可悲的是,甚至没有ends-with(...)
功能。
允许所有字符串以" AB"开头和结尾的可能解决方案至少中间的人物可能是(我对你的需求并不完全确定):
//foo[
starts-with(., 'AB')
and
substring(., string-length(.)-1, 2) = 'AB'
and
string-length(.) >= 6
]