XPath: сопоставить целое слово (используя функцию совпадений с флагом без учета регистра)
Используя XPath, я бы хотел "Совпадение всего слова" (опция для пользователя, как в поиске VS).
Кажется, как будто функцииcontains
а такжеmatches
работать аналогично, хотя совпадения учитывают такие флаги, какi
для нечувствительности к регистру.
Другими словами, я получаю одинаковые результаты с этими двумя запросами XPath:
<code><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"/> </code>
Но я хотел бы использоватьmatches
возвращать результаты, которые соответствуют & quot; Cat & quot; только целое слово:
<code><cat name="Cat" color="grey"/> </code>
Как настроить запрос на совпадение, чтобы он соответствовал целому слову?
EDIT: I forgot to mention that I need to still use the matches function because I need the case insensitivity flag.