RegEx для удаления первой и последней строки текста в многострочном комментарии - PullRequest
0 голосов
/ 01 марта 2020

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

First Line
Second Line
Third Line
Fourth Line

Выход

Second Line
Third Line

1 Ответ

0 голосов
/ 01 марта 2020

Решение будет зависеть от формата многострочных комментариев и используемого языка. Для многострочных комментариев на C языке этот может работать с флагами gmx:

^                # Start of the line followed by
(?:              # any number of the following groups:
  [^'"\/\n]      #   - a normal character, i.e.
                 #     not an apostrophe, a quote, a slash or a new line
|                #
  '\/'           #   - a slash in apostrophes
|                #
  '"'            #   - a quote in apostrophes 
|                #
  "              #   - a quoted string, consisting of the following:
    (?:          #
      [^"\\\/]   #     - not a quote, slash or backslash 
    |            #
      \\.        #     - an escape sequence: a backslash and any character
    |            #
      \/         #     - a slash
    )*+          #   end of quoted string 
  "              #
)*+              # end of pre-comment part of the line
                 #
\/\*.*+\n        # Start of a multi-line comment
(                # Sequence of lines consisting of 
  (?:            #           
    (?:          #
       .         # any character
       (?!\*\/)  # not followed by the end of the comment
    )*+          # repeated any number of times
    \n           # and a new line,
  )+?            #
)                #
.*\*\/           # followed by a line containing an end of comment 

или в сжатой форме :

^(?:[^'"\/\n]|'\/'|'"'|"(?:[^"\\\/]|\\.|\/)*+")*+\/\*.*+\n((?:(?:.(?!\*\/))*+\n)+?).*\*\/

Мы используем здесь притяжательные модификаторы, чтобы избежать ненужного обратного отслеживания, которое может значительно снизить производительность.

Следует отметить, однако, что регулярные выражения не должны использоваться для синтаксического анализа языков программирования, таких как C, и некоторые языки программирования (например, Perl) вообще не могут быть статически проанализированы каким-либо методом, не только регулярными выражениями.

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