#regex #atom-editor
Вопрос:
Я хочу удалить из файла все, включая цифры, символы, специальные символы, кроме 01 - 10
шаблона. Например:
01 - 10
This is the first one :1
02 - 20
This is the second one -2
03 - 30
This is the third one "3
04 - 40
This is the forth one ;4
05 - 50
This is the fifth one .5
Регулярное выражение , которое я использовал [^dds-sdd]
, состоит в том, чтобы соответствовать всему, кроме шаблона «01 — 10», выбрав dds-dd
и используя набор символов charet(^).
Но, используя это, я получаю:
01 - 10
1
02 - 20
-2
03 - 30
3
04 - 40
4
05 - 50
5
Но я хочу, чтобы результат был:
01 - 10
02 - 20
03 - 30
04 - 40
05 - 50
Т. е. я хочу,
чтобы шаблон 01 — 10 и
не включал ни одного человека :1 и -2 и «3 и ;4 и .5, как указано в задаче вверху.
И наоборот, т. е. для выбора каждой строки, кроме шаблона «01 — 10»
, например:
This is the first one :1
This is the second one -2
This is the third one "3
This is the forth one ;4
This is the fifth one .5
Я хочу знать шаблон регулярного выражения для случая 01 — 10 и наоборот, чтобы я мог хранить оба отдельно сгенерированных результата в отдельных файлах.
Комментарии:
1. Используйте
^(?!0(d) - g{1}0$).*
для сопоставления и замены пустой строкой.2. Спасибо за ваш быстрый ответ, но не могли бы вы уточнить, пожалуйста, чтобы я мог понять, как работает это регулярное выражение
3. Я использую текстовый редактор ATOM
4. У меня есть еще один вопрос по этому поводу — применимо ли это и для шаблона типа 01:10 с небольшими изменениями, такими как ^(?!0(d):g{1}0$).* ?
Ответ №1:
Вы можете использовать это регулярное выражение:
^(?!d{2}h*[:-]h*d{2}h*$).*[rn]
Демонстрация регулярных выражений
Сведения о регулярном выражении:
^
: Начало(?!
: Начните с негативного образаd{2}
: Совпадение 2 цифрh*[:-]h*
: Сопоставьте 0 или более горизонтальных пробелов, за которыми следует:
или-
за которыми следует 0 или более горизонтальных пробеловd{2}
: Совпадение 2 цифрh*
: Совпадение 0 или более пробелов$
: Конец строки
)
: Конец негативного образа.*
: Сопоставьте что угодно[rn]
: Совпадение 1 разрывов строк- Замена-это пустая строка для удаления всех совпадающих строк
Обратное Удаление
Для удаления строк пар цифр вы можете использовать:
^(?=d{2}h*[:-]h*d{2}h*$).*[rn]
Комментарии:
1. Большое вам спасибо за то, что нашли время для подробного объяснения работы вашего предоставленного regex…It очень полезно…Хорошего вам дня!!!
2. Просто уточнение. Вы тоже хотите сохранить такие строки
12:89
? Потому что вопросы упоминаютexcept 01 - 10 pattern
3. Да, просто щелкнул, что если шаблон похож на 12:89, чтобы я мог лучше понять, как работает регулярное выражение… но еще раз спасибо вам за ваше подробное объяснение
4. @AkshayaAmar Вас конкретно интересует структура
0x - x0
или какие-либо двузначные числа, разделенные дефисом? Основываясь на примерах, приведенных в вашем вопросе, первое, по-видимому, верно. Обратите внимание, что в другом ответе любые двузначные числа будут разделены знаком » — » (например,55 - 23
). Это то, чего ты хочешь?5. Вы можете использовать это и это
Ответ №2:
Комментарии:
1. спасибо за ваш быстрый ответ…могу ли я использовать это же регулярное выражение ^(?!dds:sdd).* для шаблона, такого как 01:10 тоже?
2. ^(?!dds:sdd).* будет работать, если это «01 : 10» (с пробелами), но если это 01:10 (без пробела), то вам нужно ^(?!dd:dd).*
3. Вы можете просто открыть ссылку, которую я опубликовал, и поиграть с регулярным выражением, вы увидите результат в реальном времени 🙂
4. Большое вам спасибо за разъяснение и ссылку тоже… Хорошего вам дня!!!