как поставить # перед каждой строкой в ​​скобках с помощью RegEx? - PullRequest
0 голосов
/ 13 марта 2020

Я хочу изменить это

@author(
line 1
line 2
line 3
)

на следующее с помощью RegEx.

@author(
#line 1
#line 2
#line 3
)  

Я могу вот так ^@author\([^]]+\n\) запросить блок, как разместить # перед каждой строкой?

Ответы [ 3 ]

1 голос
/ 13 марта 2020

Для механизма регулярных выражений PCRE (PHP) вы можете использовать регулярное выражение

^([^)@].*)

Демо

Регулярное выражение выполняет следующие операции:

^      # match beginning of line
(      # begin capture group 1
[^)@]  # match a character other than ')' and ']'
.*     # match 0+ chars to the end of the line
)      # end capture group 1
0 голосов
/ 14 марта 2020

Если вы используете язык программирования, который поддерживает якорь \G, вы можете использовать

(?:(^@author\((?=[^()]*\))\r?\n|\G(?!^))([^()\r\n]+\r?\n))

Regex demo

При замене используйте 2 захват групп

$1#$2

Если поддерживается бесконечное повторение в виде , вы можете использовать

(?<=^@author\(\r?\n[^()]*)[^(\r\n)]+\r?\n(?=[^()]*\))

Regex demo

При замене используйте полное совпадение с добавлением #

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

Если вы используете среду регулярных выражений на основе PCRE, вы можете искать

(@author\(\n|\G(?!\A).*+\n(?!\)))

и заменять совпадения на

$1#

. См. Объяснение этого выражения на regex101.com .

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