Используя 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 name="Cat" color="grey"/>
Как я могу настроить запрос совпадений, чтобы он соответствовал всему слову?
EDIT: я забыл упомянуть, что мне все еще нужно использовать функцию совпадений, потому что мне нужен флаг нечувствительности к регистру.