Я обновляю очень большой проект C, и мне нужно выяснить часть кода, написанную конкретным программистом. К счастью, каждый парень, участвующий в этом проекте, отмечает свой собственный код, используя свой адрес электронной почты в стандартных комментариях стиля C.regex: извлечь текст между двумя строками с текстом, который соответствует определенному слову
Хорошо, кто-то может сказать, что это может быть легко достигнуто с помощью grep из командной строки, но это не моя цель: мне может потребоваться удалить эти комментарии или заменить их другим текстом, поэтому регулярное выражение является единственным решением.
Ex.
/*********************************************
*
* ... some text ....
*
* author: [email protected]
*
*********************************************/
От this post я нашел правильное выражение для поиска комментариев в стиле C, который является:
\/\*(\*(?!\/)|[^*])*\*\/
Но этого не достаточно! Мне нужны только комментарии, содержащие конкретный адрес электронной почты. К счастью, домен адреса электронной почты, который я ищу, кажется уникальным во всем проекте, поэтому это может сделать его проще.
Я думаю, что я должен использовать некоторые положительные опережения утверждение, я попытался это одно:
(\/\*)(\*(?!\/)|[^*](?=.*domain.com))*(\*\/)
, но он не работает! Любые советы?
['\/\ * [^ *] * (?: \ * (?! \ /) [^ *] *) * @ Domain \ .com [^ *] * (?: \ * (?! \ /) [^ *] *) * \ * \/'] (https://regex101.com/r/nW8uP2/1)? –
'\/\ *. * Автор:. * @ Domain \ .com. *? \ * \ /' Должен совпадать. – Saleem
@Saleem, [он будет перегорать] (https://regex101.com/r/mV2bU2/1), не полагайтесь на '. *', Когда имеете дело с совпадением внутри помеченного текста. –