我试图使用正则表达式将n个短语的文本拆分成段落(即:在一定数量的短语之后,开始一个新的段落),使用Notepad ++。
我提出了以下正则表达式(在这种情况下,每3个短语 - >新段落):
(([\S\s]*?)(\.)){3}
到目前为止一切顺利。但是,我如何匹配现在的短语? $1
,$2
只会匹配大括号..
示例文字:
Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad 微小的veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in 代表性的velitate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum。
期望的结果(使用2的计数):
Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad 微小的veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。
Duis aute irure dolor in 代表性的velitate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum。
答案 0 :(得分:1)
使用此模式查找:
((.*?\.){2})
内括号......
( )
...提供受{2}
影响的群组。
外括号......
( )
...提供替换模式的分隔符。由于它们是“顶级”,因此它们是替换模式\1
将附加的内容。
请注意,外括号必须包含{2}
。我不擅长思考正则表达式如何处理所有内容,但幸运的是,Notepad ++提供即时确认 - 只需按“查找”即可观看它跳过匹配。
替换模式之后是return和new行,因此整个字符串如下所示:
\1\r\n
如果你想要一个可选空格,请确保添加\s?
...可能是这样,但我没有测试它。:
((.*?\.\s?){2})
如果问题是在结果中插入一个空格,只需在替换模式中添加一个空格(或两个,如果你像我这样老派):
\1 \r\n
答案 1 :(得分:1)
怎么样:
找到:((?:[^.]+\.){2})
替换为:$1\n
答案 2 :(得分:0)
找到以句号结尾的句子很容易。比如两句话
(?:.*?\.){2}
要使其成为段落(插入新行),请替换为
$0\r\n\r\n
这个插入两个回车+换行符是Windows标记新行的方式。在Unix文件\n\n
就足够了。如果您只想要一个换行符,只需执行$0\r\n\r\n
如果你想使它与htlm段相同的搜索,你可以用
替换 <p>$0</p>