我试图在一个降价文件的某些段落中封装一个打油诗(带有转义行尾/单行换行的段落)。
示例:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed maximus ut dui non malesuada. Duis ultrices erat quis velit rutrum, a elementum lectus dictum.
There was a young lady named Bright\
who traveled much faster than light.\
She set out one day\
in a relative way,\
and came back the previous night.
Nulla in dapibus erat. Integer sed cursus nunc.
Quisque quis neque orci. Aliquam in leo consectetur, molestie massa quis, pretium nulla.
现在,我怎样才能做到这一点:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed maximus ut dui non malesuada. Duis ultrices erat quis velit rutrum, a elementum lectus dictum.
<tag>There was a young lady named Bright\
who traveled much faster than light.\
She set out one day\
in a relative way,\
and came back the previous night.</tag>
Nulla in dapibus erat. Integer sed cursus nunc.
Quisque quis neque orci. Aliquam in leo consectetur, molestie massa quis, pretium nulla.
我能够抓住利默里克段落的结尾。但是当我使用/ m和s / modifiers时,该死的正则表达式太贪心了。
我试过
[^\n]^$.+?\\
^$[^\n].+?\\
^$[^\n].+?\\
^$.^.+?\\.+?[^\\]$
这真让我疯狂。
答案 0 :(得分:1)
您似乎正在尝试匹配连续行 以\
结尾,但最后一行除外。
您可以使用
preg_replace('/^.+\\\\(?:\R.+\\\\)*\R.*/m', '<tag>$0</tag>', $txt)
请参阅this regex demo。
详细:
^
- 开始行.+
- 尽可能多的除了换行符号之外的一个或多个字符\\
- 文字\
(?:\R.+\\)*
- 0个或更多序列:
\R
- 换行.+
- 除了换行符号之外的任何1个字符\\
- 文字\
\R.*
- 换行符(\R
)和换行符号以外的任何0 +字符(直到行尾)。