Выражение Regex для одиночных и многострочных комментариев Python - PullRequest
0 голосов
/ 15 октября 2018

Я собираюсь сделать редактор Python с C #.Я хочу написать регулярное выражение для однострочного и многострочного комментария для Python.Я пытался изменить это выражение для однострочного и многострочного комментария в C #, но я не смог этого сделать, потому что в C # они используют /* и */, чтобы мы могли знать, что является началом или концом.Но в Python они используют только "" "(или '' '), поэтому мы не можем знать, что является началом или концом.

Выражение регулярного выражения для C #:

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

Пример одинарной строкии многострочный в Python

Однострочный:

''' comment comment '''

""" comment comment """

Многострочный

''' comment comment
comment comment
'''

""" comment comment
comment comment
"""

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Попробуйте Regex: ("""|''')[\s\S]*?\1

Демо

0 голосов
/ 15 октября 2018

Примерно так может работать: /("""[^"]*+"""|'''[^']+'''|#[^\n]*)/ за исключением ...

В то время как #stuff однозначно обозначает комментарий, '''this one''' и """this (next line) other"""это не обязательно однострочные / многострочные комментарии, это просто строки.Нотация тройных (одинарных / двойных) кавычек предназначена для строк, которые можно разбить на несколько строк.

Например, это допустимый код Python.s="""My name is Alice. My name is Bob."""

Так и есть.eggs("""spam, sausages, spam, spam, spam""").

Точный ответ должен позаботиться о том, чтобы исключить как минимум два вышеупомянутых случая.

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