$re = '/([\n#*]+\s*)/m';
$str = '<!-- Comment 1 -->
<!-- Comment 2 multiline
Comment 2a
Comment 2b-->
<noinclude>
{{draft}}
[[Category:List by frequency]]
</noinclude>
== Inline ==
one # twor !! #two and half# L1phrase → L2 definition
== List ==
# One
# Two !!
# Two and half
# L1phrase → L2 definition
# L1 item → L2 definition [pos:adjective, ipa: /vɜːt/]
== Hidden pseudo JSON
# 他 → { item:他, simplified:他, pinyin:tā, IPA:tʰa˥˥, eng:he },
# 我們 → { item:我們, simplified:我们, pinyin:wǒmen, IPA:uɔ˨˩mən, eng:we},
== Poems ==
***
INVICTUS (SENTENCES)
Out of the night that covers me
Black as the pit from pole to pole,
I thank whatever gods may be
For my unconquerable soul.
In the fell clutch of circumstance,
I have not winced nor cried aloud.
Under the bludgeonings of chance
My head is bloody, but unbowed.
Beyond this place of wrath and tears
Looms but the Horror of the shade,
And yet the menace of the years
Finds, and shall find, me unafraid.
It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate
I am the captain of my soul.
INVICTUS (POEM MODE)
Out of the night that covers me
Black as the pit from pole to pole,
I thank whatever gods may be
For my unconquerable soul.
In the fell clutch of circumstance,
I have not winced nor cried aloud.
Under the bludgeonings of chance
My head is bloody, but unbowed.
Beyond this place of wrath and tears
Looms but the Horror of the shade,
And yet the menace of the years
Finds, and shall find, me unafraid.
It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate
I am the captain of my soul.
';
$subst = "\n# ";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php