регулярное выражение соответствует строке слева от комментария c ++ - PullRequest
0 голосов
/ 23 марта 2011

Я ищу шаблон для извлечения строки слева от комментария c ++ и самого комментария. Проблема в том, что левая сторона также может содержать одну косую черту.

Пример:

"abc/def//comment"

В результате я хотел бы иметь 2 группы, которые содержат левую часть комментария и сам комментарий:

  1. а / Защита
  2. // комментарий

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Если вы обрабатываете файл построчно, это регулярное выражение будет делать то, что вы хотите:

((?:(?!//).)*)(//.*)

или просто:

(.*?)(//.*)

Т.е., группа 1 содержит abc/def, а группа 2 содержит //comment.

Имейте в виду, что когда это не удается, со строковыми литералами и многострочными комментариями (назовите только два пит-фолла):

"a string with // in it"

/*
// not a comment!
*/
0 голосов
/ 23 марта 2011
echo "abc/def//comment" | sed -r 's|(.*)//(.*)|\1 //\2|'
abc/def //comment

А как насчет нескольких пар слешей? Комментарии внутри строк в порядке?

...