У меня есть требование удалить отступ из пронумерованного абзаца. В настоящее время я делаю это с помощью нескольких регулярных выражений и некоторого кода, но хотел бы выполнить его с одним или несколькими регулярными выражениями. Пункт выглядит следующим образом:Регулярное выражение для удаления отступа
1. THE FIRST LINE OF THE PARAGRAPH
ANOTHER LINE IN THE PARAGRAPH
AN INDENTED LINE WITHIN THE PARAGRAPH
Это должно быть преобразовано, чтобы сохранить отступ внутри абзаца, но удалить отступ всего абзаца, как измерено с помощью отступа первой строки.
THE FIRST LINE OF THE PARAGRAPH
ANOTHER LINE IN THE PARAGRAPH
AN INDENTED LINE WITHIN THE PARAGRAPH
Следующее регулярное выражение выполняет задачу путем замены совпадений на пустые строки. (Обратите внимание, что нет никакой ожидаемой в этом содержании вкладки, все пространство):
(\A *\d+\. *|^ {0,5})
Но это требует, чтобы длина отступы от символов устанавливаются в явном виде. Я хотел бы использовать общий способ, который будет работать с любой длиной отступа. Любые идеи о том, как одно или несколько регулярных выражений (применяемых кумулятивно) могли бы выполнить это?
Я использую механизм регулярного выражения .NET с включенным многострочным режимом.
Выражение в правой части | соответствует от 0 до 9 пробелов, начинающихся в начале строки. Думаю, вы не видели пространства? Ваше выражение удаляет все пространство перед каждой строкой, но не сохраняет отступ третьей строки. Спасибо за вашу помощь. – user3565980
Я просто понял, что мое решение, использующее буквальное значение «9», не было тем, что я намеревался - это должно было быть «4». Я исправил это для ясности. – user3565980
Ага, я вижу проблему - когда мы сталкиваемся с совпадением на не пронумерованной строке, мы понятия не имеем, сколько пробелов для удаления (основано на более раннем совпадении). Я не вижу, как это возможно с помощью регулярных выражений. –