Я пытаюсь реализовать простой механизм "найти на странице" с помощью элемента управления веб-браузером GeckoFX (поскольку меня не удовлетворяет "window.find()" и не может заставить что-либо работать.
Идея состоит в том, чтобы добавить форматирование <span style=\"background-color: gold;\">
search text </span>
"в элемент innerhtml ячейки или абзаца, содержащего искомую строку.
Хотя я ищу соответствия в cell.InnerText, если я нахожу совпадение, я хочу заменить cell.InnerHtml. И в случае, если cell.InnerHtml содержит искомую строку внутри тегов, они будут завинчены.
Возможно, код объяснит лучше: здесь моя строка ввода
<span><a href=\"/some random link containing text\">test search text that should be found</a></span>
код:
string goldSpanStyle = "<span style=\"background-color: gold;\">";
string textToFind = "text";
if (cell.TextContent.IndexOf(textToFind , comp) >= 0)
{
match = cell.TextContent.Substring(cell.TextContent.IndexOf(textToFind , stringComparisonOrdinalIgnoreCase), textToFind.Length);
}
if (match != "")
{
cell.InnerHtml = Regex.Replace(cellHtml, textToFind, goldSpanStyle + match + "</span>", RegexOptions.IgnoreCase);
}
Теперь в этом случае мы будем вставлять html, потому что форматирование диапазона будет добавлено в атрибут href, а также <span><a href=\"/some random link containing <span style=\"background-color: gold;\">text</span>\">test search <span style=\"background-color: gold;\">text</span> that should be found</a></span>
Мне нужно регулярное выражение, которое будет соответствовать только тексту, который не находится внутри тегов... Я пробовал это (?!(<[^>]+>))(text)(?=<\/[^>]+>)
Но результаты были не очень хорошими, поскольку это могло бы соответствовать только в том случае, если последняя буква строки поиска будет находиться прямо перед закрывающим тегом (в этом случае "d" (?!(<[^>]+>))test search text that should be found(?=<\/[^>]+>)
Заранее благодарим за помощь и консультацию Bartosz
=== Редактировать:
В принципе, я думаю, что в примерной строке, такой как <a href="www.match.com">match</a>
мне нужно <a href="www.match.com">match</a>
только второе слово "match", а не внутри <a href="www.match.com">
...
Ниже регулярное выражение будет захватывать только второй test
или match
,
(test|match)(?=[^<>]*<)
test
на text
, это все твое. Я думаю, это то, что вы ищете.
<span><a href=\"/some random link containing text\">test search <span style=\"background-color: gold;\">text</span> that should be found</a></span>