将段落定义为两边用双新行('\n \n')分隔的多行字符串.如果存在包含某个字符串('BAD')的段落,我想用一些其他标记('GOOD')替换该段落(即包含BAD的任何文本,直到最接近的前一行和后面的双重换行符).这应该是一个python 3正则表达式.
我有这样的文字:
dfsdf\n
sdfdf\n
\n
blablabla\n
blaBAD\n
bla\n
\n
dsfsdf\n
sdfdf
Run Code Online (Sandbox Code Playgroud)
应该:
dfsdf\n
sdfdf\n
\n
GOOD\n
\n
dsfsdf\n
sdfdf
Run Code Online (Sandbox Code Playgroud)
这个给你:
/\n\n(?:[^\n]|\n(?!\n))*BAD(?:[^\n]|\n(?!\n))*/g
Run Code Online (Sandbox Code Playgroud)
好吧,把它分解一下(因为看起来很讨厌):
\n\n 匹配两个文字换行符.(?:[^\n]|\n(?!\n))*是一个非捕获组,它匹配单个非换行符或换行符后面没有的换行符.我们重复整个组0次或更多次(如果BAD出现在段落的开头).BAD将匹配您想要的文字文本.很简单.然后,你只需要替换它\n\nGOOD,然后你即可参加比赛.
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |