как найти '/ * N * /' с помощью регулярных выражений - PullRequest
0 голосов
/ 14 октября 2010

Я не хочу изучать регулярные выражения только для этой конкретной проблемы.Мне нужно найти комментарии '/ * N * /' через файлы C ++.Может кто-нибудь написать регулярное выражение, которое находит такие комментарии?

Ответы [ 3 ]

2 голосов
/ 14 октября 2010

Попробуйте это регулярное выражение:

/\/\*(.*?)\*\//

Вот как это работает:

\/    <- The / character (escaped because I used / as a delimiter)
\*    <- The * character (escaped because it's a special character)
(     <- Start of a group
  .     <- Any character
  *     <- Repeated but not mandatory
  ?     <- Lazy matching
)     <- End of the group
\*    <- The * character
\/    <- The / character

Редактировать: он не обрабатывает \n и \r\n, если вы хотите, чтобы он рассмотрел @ Alex ответ с флагом m.

2 голосов
/ 14 октября 2010

Как насчет

/\/\*(.+?)\*\//m

$1 будут вашими комментариями.

Надеемся, m модификатор шаблона сделает период (соответствует всем) совпадением с новыми строками (\n)также.

Обратите внимание, что + означает, что он будет сопоставлять комментарии только с хотя бы одним символом - поскольку кажется, что вы хотите знать сами комментарии, это нормально (для чего нужен комментарий длиной 0)?

Однако, если вы хотите узнать общее количество блоков комментариев, измените + (1 или более) на * (0 или более).

Кроме того, почему бы не дать регулярное выражениепопробовать?С самого начала это сложно, потому что синтаксис выглядит забавно, но он действительно мощный.

0 голосов
/ 14 октября 2010

Как насчет: (? <= \ / *) (. *?) (? = * \ /) </p>

, который использует взгляды и взгляды и захватывает текст комментария (в противном случае удаляйте скобки вокруг.* не захватывать).Убедитесь, что вы используете многострочный поиск, потому что это многострочные комментарии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...