Notepad++ - поиск одинаковых вещей, которые находятся в строке дважды

Я хотел бы знать, есть ли способ поиска файла для двух вещей в одной строке. Например, если я хочу найти строку с " variable > = "и "variable>=". Проблема в том, что я не знаю, что такое "переменная" (ну, в файле много разных переменных, и я ищу проверку дубликатов переменных в одной строке).

может кто-нибудь помочь мне с этим?

23
задан liledition
27.04.2023 11:55 Количество просмотров материала 3476
Распечатать страницу

2 ответа

у вас есть несколько вариантов...

в любом случае перед началом:

  • откройте диалоговое окно" найти "(Ctrl + f) или" заменить " (если вы знаете, что вы хотите сделать дальше),
  • выберите переключатель "регулярное выражение"в левом нижнем углу диалогового окна.
  • здесь, я буду предполагать, что вы ищете дубликаты шаблонов, таких как variable >= something или hour >= NUM.
  • кроме того, я в группе как можно больше, так что вы можете позже смогу замените путем держать, или бросать прочь, любую часть как нужно.

(1) Явное Найти

вы знаете дубликаты, и вы можете найти их явно, например:

((variable)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

или, для "час", просто замените слово "переменная" на слово "час":

((hour)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

объяснение:

каждый набор скобок, слева направо, - это группа. Поэтому, вы будете иметь следование:

Группа 1:((variable)\s*>=\s*\S+) : находит строку, начинающуюся с" variable", за которой следует \s (пробел) и * означает любое количество пробелов (следовательно, вы можете иметь "variable>=" или " variable>="), символы >= дальше больше \s* (любые пробелы), затем, наконец, любой непространственный символ \S+ (том + говорит, что должен быть хотя бы один).

Группа 2:(variable) : группа 2 находится в группе 1, и это просто способ извлечь имя "переменная".

Группа 3:(.*) : что-нибудь между двумя дубликатами вы найдете. Это позволяет сделать что-то с этим дополнительным текстом, если он существует.

Предупреждение, если есть трипликаты (или больше), это будет потребитель шаблоны в середине, делая group1 и group4 содержат только первый и последний дубликаты. Если вы хотите найти последовательные дубликаты, то измените эту часть на (.*?); the ? делает его не жадным, т. е. найдет минимум . (ничего).

4 группа:(\s*>=\s*\S+) : наконец, это дублировать. Причина его дубликат, потому что узор такой же, как и группы 1, Кроме того, он использует , это просто способ сказать, что находится в группе 2. В данном случае это слово "переменная".

вторая картина для "часа" по мере того как вы увидите идентична, за исключением того, что он ищет "час", а не"переменную".

(2) Найти Неизвестные Повторяющиеся Узоры

С небольшими изменениями, вы можете искать любые дубликаты одного и того же шаблона:

((\w+)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

объяснение:

это идентично поиску дубликатов с явно известными именами. Разница здесь заключается в использовании \w+ (любые буквы и слова), а не слово "переменная"/"час".

\w+:\w соответствует любому символу слова (включая прописные, строчные и цифры, но не знаки препинания или другие символы). The + снова так сказать, по крайней мере, один. Поэтому, с \w+ вы найдете любые буквы слова.

1
отвечен jehad 2023-04-28 19:43
  1. открыть найти... диалоговое окно
  2. установите" режим поиска "в"регулярное выражение"
  3. снимите ". соответствует новой строке"
  4. найти: variable\s*?>=.*?variable\s*?>=
0
отвечен 2023-04-28 22:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх