Используя XPath, я хотел бы использовать опцию «Сопоставить целое слово» (для пользователя, точно так же, как в поиске VS )].
Кажется, что функции contains
и 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"/>
Как я могу настроить совпадения запрос, чтобы он соответствовал всему слову?
РЕДАКТИРОВАТЬ :Я забыл упомянуть, что мне все еще нужно использовать функцию совпадений, потому что мне нужен флаг нечувствительности к регистру.