2012-03-19 2 views
1

Используя регулярное выражение, я хочу проанализировать строку, такую ​​как «DOCID = 1234567 THIS IS TEST», и удалить оставшуюся строку после чисел.Нужно Regex для разбора строки

Как это сделать с помощью редактора VIM?

+0

Что ваш язык? – Toto

+0

На каком языке вы используете? –

+0

Ребята, язык важен? его вопрос регулярного выражения, вы должны спросить waht regex engine, который он использует. – rapadura

ответ

4

В Perl:

$str =~ s/(= \d+).*$/$1/; 

В PHP:

$str = preg_replace('/(= \d+).*$/', "$1", $str); 
+0

Чтобы выбрать предыдущую группу, это не должно быть '(. * = \ D +)'? – slashmais

+0

@slashmais: Нет, это не обязательно, потому что он заменяет все совпадения первой группой. – Toto

1

В VIM, в командном режиме (нажмите ESC), написать:

:s/\([^0-9]\+[0-9]\+\).*/\1/ 

Это сделает эту работу. Если вы хотите сделать все замены можно, то:

:s/\([^0-9]\+[0-9]\+\).*/\1/g 
2

Это сделает работу:

:%s/\d\+\zs.* 

Объяснение:

  • % использовать весь буфер, вы можете пропустить этот если вы хотите изменить только текущую линию
  • s команда заместителя
  • \d\+ матч, как много чисел
  • \zs установить начало матча здесь
  • .* все остальное
  • вы можете пропустить строку замены, потому что вы хотите удалить матч