Поиск и замена цифр с помощью регулярного выражения

Я хочу с помощью Notepad++ выполнить поиск в файле субтитров "," и его следует заменить на "." между цифрами временных меток, но не в остальных текстовых строках.

Источник:

00:01:17,000 --> 00:01:20,000
vor allem aber an Ausläufen, Reitplätzen
und Weideflächen.

На данный момент я ищу: "," и для замены использую регулярное выражение "\1.\2". Но это также изменит все остальные запятые между текстовыми строками.

  • Шаблон поиска: [,]
  • Шаблон замены: [\1.\2]

Результат:

00:01:17.000 --> 00:01:20.000
vor allem aber an Ausläufen. Reitplätzen
und Weideflächen.

Как мне расширить регулярное выражение, чтобы заменить запятые только между цифрами временных меток?

Чего я ожидаю:

00:01:17.000 --> 00:01:20.000
vor allem aber an Ausläufen, Reitplätzen
und Weideflächen.

1
50
2

Ответы:

Я бы поискал следующее:

 ^([0-9:]{8}),(\d{3}) --> ([0-9:]{8}),(\d{3})$

И замените это на это:

\1.\2 --> \3.\4

Регулярное выражение соответствует определению всего временного сегмента, сначала сопоставляя часть xx:yy:zz с [0-9:]{8} (восемь цифр и двоеточий) и помещая ее в первую группу, затем миллисекундные части с \d{3} и помещая ее во вторую группу. То же самое происходит и с временем окончания, части которого помещаются в третью и четвертую группу.
Шаблон замены относится к этим группам и восстанавливает определение временного сегмента с помощью точек вместо запятых.


Решено

Вы можете использовать более конкретное регулярное выражение для Notepad++.

\b\d{2}:\d{2}:\d{2}\K,(?=\d{3}\b)

Шаблон соответствует:

  • \b Граница слова для предотвращения частичного совпадения слов.
  • \d{2}:\d{2}:\d{2} Сопоставьте часы, минуты и секунды.
  • \K, Забудьте, что уже найдено, и затем укажите запятую.
  • (?=\d{3}\b) Позитивный просмотр вперед, утверждает 3 цифры, за которыми следует граница слова справа.

В замене используйте точку .

Посмотрите демонстрацию регулярных выражений .


Или используйте две группы захвата и используйте эти группы в замене, разделенные точкой $1.$2

\b(\d{2}:\d{2}:\d{2}),(\d{3})\b

Посмотрите еще одну демонстрацию регулярных выражений .


Полностью соответствующий шаблон с 3 группами захвата, где \h+ соответствует 1 или нескольким горизонтальным пробельным символам:

\b(\d{2}:\d{2}:\d{2}),(\d{3}\h+-->\h+\d{2}:\d{2}:\d{2}),(\d{3})\b

Посмотрите еще одну демонстрацию регулярных выражений

В замену используйте $1.$2.$3


Интересные вопросы для изучения

Дубликат группы захватаRegex – как сопоставить строку между двумя необязательными символами, которые не включены в группу?Регулярное выражение для строки буквенно-цифровых кодов (МКБ-10) независимо от того, есть ли у нее точка в середине или нетSQL, чтобы определить, является ли строка числовыми символами, за которыми следуют буквенные символыКак изменить нижний регистр на верхний регистр при нескольких вариантах выбора в режиме регулярного выраженияКак изменить нижний регистр на верхний регистр при нескольких вариантах выбора в режиме регулярного выраженияЗамените пробелы новыми строками в числовых строках, разделенных запятымиИспользуйте Notepad++ для написания заглавных букв в змеином регистреМогу ли я использовать Notepad++ для удаления разрывов строк из строк и сохранения порядка?Перевернуть текст справа налево с примерами