LINUX.ORG.RU

Вопрос по регулярным выражениям

 


0

2

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

srt url = "http://google.ru"//Какойто комеентарий 
srt url2 = 'http://google.ru' //Какойто комеентарий 
srt url3 = "http://google.ru" //+"/search" //Какойто комеентарий 

Каким регулярным выражением отловить данные случаи? Покачто получилось (\'[^']*\'|\«[^»]*\")?(\/\/.*)? Первая группы ловит строки а вторая ловит какраз комеентарии. Вот только как телперь в sed заменить 2 группу пробелом? Если у вас другой способ решения задачи буду рад.

Ответ на: комментарий от ibahob

Посмотри модули которые занимаются раскраской кода для веба. Тот же highlight.js скажем, который тут используется. Наверняка там можно будет почерпнуть какие-нибудь идеи.

morse ★★★★★ ()

DFA можно, или регулярку (несколько) которая будет довольно ограниченной (твоими исходниками). Бо случаи на которые указал morse усложняют обобщение регулярки до такой степени, что даже если её написать, думаю мало кто сделает это на этом форуме jff.

chinarulezz ★★★★★ ()

коде написаном на С
'http://google.ru'

То есть, правило «валидный код на С» не обязательно?

По сабжу: тебе ж просто нужно обрубить строку на моменте встречи //, если оно не находится между кавычек. Нафига регулярка?

Deleted ()

Нужно удалить однострочный коментарий с коде написаном на С

В коде на C
1. есть «окончание» строки. Пусть даже через десять строк но есть.
2. апострофы для строки не могут применяться
3. Парсинг кода на C смотрите исходники того же gcc.

Сферический какой-то пример, явно из пальца придуманный.

anc ★★★★★ ()