正则表达式将段落封装在需要的降价文件中
regex to encapsule paragraph inside markdown file needed
我正在尝试在降价文件的某些段落中封装打油诗(带有转义行尾/单换行符的段落)。
示例:
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/ 修饰符时,该死的正则表达式太贪婪了。
我试过了
[^\n]^$.+?\
^$[^\n].+?\
^$[^\n].+?\
^$.^.+?\.+?[^\]$
真让我抓狂。
您似乎在尝试匹配以\
结尾的连续行,除了最后一行。
您可以使用
preg_replace('/^.+\\(?:\R.+\\)*\R.*/m', '<tag>[=10=]</tag>', $txt)
参见 this regex demo。
详情:
^
- 行首
.+
- 除换行符号外尽可能多的 1 个或更多字符
\
- 文字 \
(?:\R.+\)*
- 0 个或多个序列:
\R
- 换行符
.+
- 除换行符号外的任何 1+ 个字符
\
- 文字 \
\R.*
- 一个换行符 (\R
) 和除换行符以外的任何 0+ 个字符(直到行尾)。
我正在尝试在降价文件的某些段落中封装打油诗(带有转义行尾/单换行符的段落)。
示例:
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/ 修饰符时,该死的正则表达式太贪婪了。
我试过了
[^\n]^$.+?\
^$[^\n].+?\
^$[^\n].+?\
^$.^.+?\.+?[^\]$
真让我抓狂。
您似乎在尝试匹配以\
结尾的连续行,除了最后一行。
您可以使用
preg_replace('/^.+\\(?:\R.+\\)*\R.*/m', '<tag>[=10=]</tag>', $txt)
参见 this regex demo。
详情:
^
- 行首.+
- 除换行符号外尽可能多的 1 个或更多字符\
- 文字\
(?:\R.+\)*
- 0 个或多个序列:\R
- 换行符.+
- 除换行符号外的任何 1+ 个字符\
- 文字\
\R.*
- 一个换行符 (\R
) 和除换行符以外的任何 0+ 个字符(直到行尾)。