Ответ 1
Вы хотите найти элементы, содержащие "match", или равные "match"?
Это найдет элементы, у которых есть текстовые узлы, которые равны "match" (не соответствует ни одному из элементов из-за начального и конечного пробелов в random2
):
//*[text()='match']
Здесь будут найдены все элементы с текстовыми узлами, которые будут соответствовать "match", после удаления начального и конечного пробелов (соответствует random2
):
//*/text()[normalize-space(.)='match']/parent::*
Здесь будут найдены все элементы, содержащие "совпадение" в текстовом значении node (соответствует random2
и random3
):
//*[contains(text(),'match')]
В этом решении XPATH 2.0 используется функция matches() и шаблон регулярного выражения, который ищет текстовые узлы, которые содержат "соответствие" и начинаются с начала строки (т.е. ^
) или (т.е. \W
) и заканчивается концом строки (т.е. $
) или границей слова. Третий параметр i
оценивает шаблон регулярного выражения с учетом регистра. (соответствует random2
)
//*[matches(text(),'(^|\W)match($|\W)','i')]