Замінити групу захоплення регулярного виразу в Notepad ++?


77

Швидке запитання: У мене є регулярний вираз ^(?:\b[A-Z]+\b\s+)+(.*)\d{8}, який дає дві групи захоплення. Я хотів би замінити групу захоплення 1 пробілом. Це можливо?

Якщо я заміню на: \1він замінює TEST TESTER Hello, world. Another word here. 75793250-> на Hello, world. Another word here. Я хочу , щоб цей результат: TEST TESTER 75793250. Заміна \1пробілу.


3
Гм, наскільки я бачу, існує лише одна група захоплення ...? (?: ...)- група, яка не захоплює.
Джеррі

Я думав, що це два, 0 і 1? Група 0 - це повний матч? У будь-якому випадку я хотів би замінити групу, яку Notepad ++ викликає 1, пробілом.
Kaah

Якщо я заміню на: \1він замінює TEST TESTER Hello, world. Another word here. 75793250-> на Hello, world. Another word here. Я хочу , щоб цей результат: TEST TESTER 75793250. Заміна \1пробілу.
Kaah

Це \1не працює для мене в останній версії Notepad ++, однак я міг змусити його працювати, використовуючи $0замість цього. Здається, вони змінили синтаксис заміни групи.
demoncodemonkey

Відповіді:


134

Спробуйте використати:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8})

І замінити на:

\1\2

1
@Kaah Ласкаво просимо! :) Також нагадав мені оновити версію блокнота! У мене було 6.1.8 на xD
Джеррі

8

Навіщо ти це робиш.

Зробіть це таким чином

Регулярний вираз:^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

Замінити:\1 \2


Дякую, але це дає Invalid regular expressionNotepad ++ 6.3.3. Будь ласка, перегляньте Аніруд.
Каах

Цей регулярний вираз повернеться, TESTER 75793250оскільки захоплення повторної групи дасть вам лише останній рядок, якому він відповідає. Інший приклад: заміна рядка abcdна регулярний вираз (.)+і заміна рядка \1призведе до появи рядкаd
steve9164

6
"Навіщо ти це робиш."? Оскільки ОП не знала, саме тому вони задали питання. Такий снарк нікому не приносить користі.
Джейк Ріс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.