У вас есть несколько вариантов ...
В любом случае, прежде чем начать:
- откройте диалоговое окно "Найти" (Ctrl+f) или "Заменить" (если вы знаете, что хотите делать дальше),
- установите переключатель "Регулярное выражение" в левом нижнем углу диалогового окна.
- Здесь я буду предполагать, что вы ищете дубликаты шаблонов, таких как
variable >= something или hour >= NUM .
- Кроме того, я сгруппирую как можно больше, так что позже вы сможете заменить, сохранив или выбросив любую часть по мере необходимости.
(1) Явный поиск
Вы знаете дубликаты и можете найти их явно, например:
((variable)\s*>=\s*\S+)(.*)(\2\s*>=\s*\S+)
Или для "часа" просто замените слово "переменная" словом "час":
((hour)\s*>=\s*\S+)(.*)(\2\s*>=\s*\S+)
Объяснение:
Каждый набор скобок слева направо является группой. Поэтому у вас будет следующее:
Группа 1 : ((variable)\s*>=\s*\S+) : находит строку, которая начинается с "переменной", за которой следует \s (пробел) и * означает любое количество пробелов (следовательно, вы можете иметь « переменная> = "или" переменная> = "), то символы >= затем больше \s* (любые пробелы), затем, наконец, ЛЮБОЙ непробельный символ \S+ (+ говорит, что должен быть хотя бы один).
Группа 2 : (variable) : Группа 2 находится в группе 1, и это просто способ извлечь имя "переменная".
Группа 3 : (.*) : НИКАКОЕ из двух дубликатов вы найдете. Это позволяет вам что-то делать с этим дополнительным текстом, если он существует.
ВНИМАНИЕ, если есть три (или более) дубликата, это будет использовать шаблоны в середине, в результате чего group1 и group4 содержат ТОЛЬКО первый и последний дубликаты. Если вы хотите найти последовательные дубликаты, измените эту часть на (.*?); ? делает его нежадным, т.е. найдет минимум . (что-нибудь).
Группа 4 : (\2\s*>=\s*\S+) : Наконец, это дубликат. Причина, по которой он дублируется, состоит в том, что шаблон такой же, как в группе 1, за исключением того, что он использует \2 , что является просто способом сказать, что находится в группе 2. В данном случае это слово "переменная".
Второй шаблон для "часа", как вы увидите, идентичен, за исключением того, что он ищет "час", а не "переменную".
(2) Найти неизвестные повторяющиеся узоры
С небольшой модификацией вы можете искать ЛЮБЫЕ дубликаты одного и того же шаблона:
((\w+)\s*>=\s*\S+)(.*)(\2\s*>=\s*\S+)
Объяснение:
Это идентично нахождению дубликатов с явно известными именами. Разница здесь заключается в использовании \w+ (любое буквенно-цифровое слово) вместо слова типа "переменная"/"час".
\w+ : \w соответствует любому символу слова (включая прописные, строчные и цифры, но не знаки препинания или другие символы). + Снова способ сказать хотя бы один. Поэтому с помощью \w+ вы найдете любое буквенно-цифровое слово.