Сопоставить любой текст внутри любых тегов без этих тегов

1

Я пытаюсь реализовать простой механизм "найти на странице" с помощью элемента управления веб-браузером 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">...

  • 0
    Не могли бы вы опубликовать ожидаемый результат?
  • 0
    @AvinashRaj - уверен - <span><a href=\"/some random link containing text\">test search <span style=\"background-color: gold;\">text</span> that should be found</a></span>
Показать ещё 2 комментария
Теги:
geckofx

1 ответ

3
Лучший ответ

Ниже регулярное выражение будет захватывать только второй test или match,

(test|match)(?=[^<>]*<)

DEMO

  • 0
    О, я забываю сменить test на text , это все твое. Я думаю, это то, что вы ищете.
  • 0
    Большое спасибо, это может быть именно то, что я ищу! Я проверю чуть дальше и отмечу как ответ!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню