Регулярные выражения: захват только соответствующей группы для замены всего текста - PullRequest
1 голос
/ 15 января 2020

Это моя первая пара дней, когда я пытаюсь использовать регулярные выражения, и я использую Блокнот ++

Мне нужна помощь, у меня есть эти данные (конфиденциальные данные отредактированы), которые я хочу извлечь и распечатать (например, веб-сканирование, это HTML код из выпадающего списка). Мне нужно извлечь строку в кавычках после значения данных ", заменяя остальные вещи.

Регулярные выражения для соответствия: \ bdata-value =" (\ w +) "+ (Данные, которые я хочу, находятся в захваченной группе и я хочу напечатать только эту информацию)

Образец теста:

<div class="selectize-dropdown form-control multi plugin-remove_button" style="display: none; visibility: visible; width: 238px; top: 34px; left: 0px;" xpath="1"><div class="selectize-dropdown-content"><div data-value="TESTSTRING" data-selectable="" class="option">TEST data 1?</div><div data-value="TESTSTRINGG" data-selectable="" class="Te`enter code here`st 2">Data Type</div><div data-value="TESTSTRINGGG" data-selectable="" class="option">Data</div><div data-value="TESTSTRINGGGG" data-selectable="" class="option">All Clear</div><div data-value="TESTSTRINGGGGG" data-selectable="" class="option">Amount Involved</div><div data-value="TESTSTRINGGGGGG" data-selectable="" class="option">Trigger Data</div><div data-value="TESTSTRINGGGGGGG"

Ожидаемый результат TESTSTRING TESTSTRINGG TESTSTRINGGG TESTSTRINGGGG TESTSTRINGGGGG TESTSTRINGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTGTGTTGTGGGTGTTGTGGGTGT / R / цели 1014 *

** Я попробовал следующее **

  1. ^. \ Bdata-value = "([^ \ w +])" + - С самого начала выберите все, кроме захваченной скобки и заменить на ничего - не сработало
  2. ^. + (? = \ bdata-value = "(^ [\ w +])" +). + Здесь я попытался использовать Lookahead после матча: я пытаюсь захватывать все до тех пор, пока группа «data-value» не захватит это в группе и не исключит фактический результат
  3. Аналогичным образом пробовали другие способы, но ни один из них не был успешным.

В моем тестовом выводе обратите внимание, что если я набираю $, он не показывает конец строки, он находится в конце файла, и я попытался создать новые строки, добавив символы новой строки в конце группы. Но это не сильно помогло мне. Пожалуйста, не могли бы вы помочь мне с возможными решениями и небольшим количеством объяснений, чтобы я мог учиться, огромное спасибо.

1 Ответ

0 голосов
/ 15 января 2020

Notepad ++ здесь не лучший инструмент, и если вы хотите использовать регулярные выражения, вы должны использовать инструмент, который может многократно повторять и сопоставлять. Например, в Python мы можем попробовать:

s = """<div class="selectize-dropdown form-control multi plugin-remove_button" style="display: none; visibility: visible; width: 238px; top: 34px; left: 0px;" xpath="1"><div class="selectize-dropdown-content"><div data-value="TESTSTRING" data-selectable="" class="option">TEST data 1?</div><div data-value="TESTSTRINGG" data-selectable="" class="Te`enter code here`st 2">Data Type</div><div data-value="TESTSTRINGGG" data-selectable="" class="option">Data</div><div data-value="TESTSTRINGGGG" data-selectable="" class="option">All Clear</div><div data-value="TESTSTRINGGGGG" data-selectable="" class="option">Amount Involved</div><div data-value="TESTSTRINGGGGGG" data-selectable="" class="option">Trigger Data</div><div data-value="TESTSTRINGGGGGGG"""
matches = re.findall(r'\bdata-value="(.*?)"', s)
print(matches)

Это печатает:

['TESTSTRING', 'TESTSTRINGG', 'TESTSTRINGGG', 'TESTSTRINGGGG', 'TESTSTRINGGGGG', 'TESTSTRINGGGGGG']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...