Я хочу изменить это
@author( line 1 line 2 line 3 )
на следующее с помощью RegEx.
@author( #line 1 #line 2 #line 3 )
Я могу вот так ^@author\([^]]+\n\) запросить блок, как разместить # перед каждой строкой?
^@author\([^]]+\n\)
Для механизма регулярных выражений 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
Если вы используете язык программирования, который поддерживает якорь \G, вы можете использовать
\G
(?:(^@author\((?=[^()]*\))\r?\n|\G(?!^))([^()\r\n]+\r?\n))
Regex demo
При замене используйте 2 захват групп
$1#$2
Если поддерживается бесконечное повторение в виде , вы можете использовать
(?<=^@author\(\r?\n[^()]*)[^(\r\n)]+\r?\n(?=[^()]*\))
При замене используйте полное совпадение с добавлением #
#
Если вы используете среду регулярных выражений на основе PCRE, вы можете искать
(@author\(\n|\G(?!\A).*+\n(?!\)))
и заменять совпадения на
$1#
. См. Объяснение этого выражения на regex101.com .