使用正则表达式和替换从文本块创建填充空白文本

时间:2013-09-27 08:56:01

标签: regex

我尝试从一大块文本创建一个填空的工作表,我认为正则表达式和文本编辑器中的替换函数将大大加快我的项目。

示例文字:

  

HAMLET O,这太过坚固的肉体会融化解冻并解决   自己变成露水!或者说永恒没有修复他的经典   '获得自我屠杀!哦天啊!神!多么疲惫,陈旧,平坦   无利可图,似乎这个世界的所有用途!不要!啊!   这是一个不受欢迎的花园,它会变成种子;事情的排名和总数   自然仅仅拥有它。应该来这个!但两个月   死了:不,不是,不是两个:国王如此优秀;那就是   这,海波龙变成了色狼;如此爱我的母亲,他可能不会   对天堂之风的敬畏拜访她的脸太粗暴了。天堂和   地球!我必记得吗?为什么,她会挂在他身上,好像在增加   食欲增长了它所吃的东西:然而,在一个月内 - 让我   不要思考 - 脆弱,你的名字是女人! - 一个月,或者说   那些鞋子老了她跟着我可怜的父亲的身体,   像Niobe一样,所有的眼泪: - 为什么她,甚至她 - 哦,上帝!那个野兽   想要理性的话语,会更久哀悼 - 与我结婚   叔叔,我父亲的兄弟,但不再像我父亲那样   赫拉克勒斯:一个月之内:还是最不正义眼泪的盐   她的眼睛里充满了冲动,她结婚了。哦,最邪恶的   速度,发布这样的灵巧到乱伦的床单!它不是也不是   它无法实现:但我的心碎;因为我必须抓住我的   舌。

将替换文本集替换为空白“ _ _”,其字符长度等于已替换长度的字符长度,其中文本集定义为以“!”结尾的单词组。 “,”,“” - “,”?“等

所以哈姆雷特的上述文字变得像

  

HAMLET O, _ __ _ __ _ __ _ __ _ < / em> __ _ __ _ 或者说   永恒没有解决他的经典'自我屠杀!的 _ _   神! _ __ _ _ ,陈旧, _ __ _ __ < em> _ _ ......

为达到这个目的,我应该使用什么样的正则表达式?

1 个答案:

答案 0 :(得分:1)

以下是使用perl正则表达式的尝试:

perl -pe 's/(.*?)([\!\?\,;\.]|--)(.*?)([\!\?\,;\.]|--)/\1\2________________\4/g' file

输出:

  

HAMLET O, _ __ _ ___ !或者说永恒没有修复他的   佳能'获得自我屠杀! __ _ __ _ _ !上帝! _ __ _ 的___的   陈旧, __ _ __ _ _ ,似乎对我的所有用途   世界! _ __ _ 的___的 !啊!fie! __ _ __ _ _ ,这会增长到   种子的 _ __ _ ___ 。它应该来了! __ _ __ _ _ ,   不是那么多, _ __ _ ___ ;那就是 __ _ __ _ _ ,Hyperion到了   色狼;的 _ __ _ ___ 。天地! __ _ __ _ _ ?   为什么, _ __ _ ___ ,好像食欲增加了   已经开始了: __ _ __ _ _ - 让我不要想   on't - _ __ _ ___ ,你的名字是女人! < / strong> __ _ __ _ _ - 一点点   月, _ __ _ ___ ,与Niobe一样, __ _ __ _ _ - 为什么   她, _ __ _ ___ - O, __ _ __ _ _ !野兽, _ __ _ ___ ,   我会哀悼更久 - __ _ __ _ _ ,我父亲的   兄弟, _ __ _ ___ ,她结婚了。 __ _ __ _ _ ,最邪恶   速度, _ __ _ 的___的 !它不是也不可能是好的:但是   打破,<强> __ _ __ _ _ ;因为我必须抓住我的舌头。

这个解决方案取代了'__'的修正号,我还没弄明白如何用匹配的charater长度替换。