Уточнить строку, используя Python / Регулярное выражение - PullRequest
0 голосов
/ 23 марта 2019

, пожалуйста, помогите мне с уточнением этой строки, используя python / regex.Он также имеет большие пробелы.

/**
         * this is comment                this is comment
         * this is comment
         * <blank line>
         *      this is comment
         * this is comment
         * <blank line>
         * this is comment
         */

как получить простой текст, удалив / **, *

Я ожидаю, что выходная строка должна быть:

этокомментарий
это комментарий
это комментарий
это комментарий
это комментарий

Ответы [ 2 ]

2 голосов
/ 23 марта 2019

Как теперь ясно, что ОП ожидал, что комментарий this is comment шесть раз, поэтому я предлагаю использовать это регулярное выражение,

^[ /*]+\n?| {2,}(.*(\n))

И заменить его на \2\1.

Демо

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

Вот демонстрация кода Python,

import re

s = '''/**
         * this is comment                this is comment
         * this is comment
         * 
         *      this is comment
         * this is comment
         * 
         * this is comment
         */'''

print(re.sub(r'(?m)^[ /*]+\n?| {2,}(.*(\n))', r'\2\1', s))

Печатает следующее и замечает, что я включил многострочный режим, используя (?m) перед регулярным выражением, как предложено FailSafe и большое спасибо ему за то, что он предложил это, поскольку это не было иначе заметно,

this is comment
this is comment
this is comment
this is comment
this is comment
this is comment

Дайте мне знать, если вам нужно объяснение какой-либо части в моем ответе.

1 голос
/ 23 марта 2019

Вы можете использовать функцию sub() из модуля RegEx для сопоставления нежелательных символов и форматирования входной строки.Вот подтверждение концепции, которая дает желаемый результат.Вы можете проверить это здесь: https://repl.it/@glhr/regex-fun

import re

inputStr = """/**
         * this is comment                this is comment
         * this is comment
         * 
         *      this is comment
         * this is comment
         * 
         * this is comment
         */"""

formattedStr = re.sub("[*/]", "", inputStr) # comments
formattedStr = re.sub("\n\s{2,}|\s{2,}", "\n", formattedStr) # extra whitespaces
formattedStr = re.sub("^\n+|\n+$|\n{2,}", "", formattedStr) # extra blank lines
print(formattedStr)

Вы можете экспериментировать с регулярными выражениями на таких сайтах, как https://regexr.com/

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