使用XPath,我想要实现“整字匹配”(就像在VS搜索中一样的选项)。
似乎函数contains
和matches
的工作方式相似,但matches允许使用标志,如i
表示不区分大小写。
换句话说,这两个XPath查询返回的结果是相同的:
<pets>
<dog name="Rupert" color="grey"/>
<dog name="Ralph" color="brown"/>
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
<cat name="Fluffy" color="black"/>
</pets>
Matches XPath: //cat[descendant-or-self::*[@*[matches(.,'Cat')]]]
returns:
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
Contains XPath: //cat[descendant-or-self::*[@*[contains(.,'Cat')]]]
returns:
<cat name="Marvin the Cat" color="white"/>
<cat name="Garfield the Cat" color="orange"/>
<cat name="Cat" color="grey"/>
但我想使用matches
仅返回完全匹配单词"Cat"的结果:
<cat name="Cat" color="grey"/>
如何调整匹配查询以匹配整个单词?
编辑: 我忘了提到我仍然需要使用matches函数,因为我需要不区分大小写的标志。
^
和$
匹配行的开头/结尾,而不是单词边界的开头/结尾。 - neaumusic