У вас есть несколько вариантов ...
В любом случае, прежде чем начать:
- откройте диалоговое окно "Найти" (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+
вы найдете любое буквенно-цифровое слово.