我尝试从一大块文本创建一个填空的工作表,我认为正则表达式和文本编辑器中的替换函数将大大加快我的项目。
示例文字:
HAMLET O,这太过坚固的肉体会融化解冻并解决 自己变成露水!或者说永恒没有修复他的经典 '获得自我屠杀!哦天啊!神!多么疲惫,陈旧,平坦 无利可图,似乎这个世界的所有用途!不要!啊! 这是一个不受欢迎的花园,它会变成种子;事情的排名和总数 自然仅仅拥有它。应该来这个!但两个月 死了:不,不是,不是两个:国王如此优秀;那就是 这,海波龙变成了色狼;如此爱我的母亲,他可能不会 对天堂之风的敬畏拜访她的脸太粗暴了。天堂和 地球!我必记得吗?为什么,她会挂在他身上,好像在增加 食欲增长了它所吃的东西:然而,在一个月内 - 让我 不要思考 - 脆弱,你的名字是女人! - 一个月,或者说 那些鞋子老了她跟着我可怜的父亲的身体, 像Niobe一样,所有的眼泪: - 为什么她,甚至她 - 哦,上帝!那个野兽 想要理性的话语,会更久哀悼 - 与我结婚 叔叔,我父亲的兄弟,但不再像我父亲那样 赫拉克勒斯:一个月之内:还是最不正义眼泪的盐 她的眼睛里充满了冲动,她结婚了。哦,最邪恶的 速度,发布这样的灵巧到乱伦的床单!它不是也不是 它无法实现:但我的心碎;因为我必须抓住我的 舌。
将替换文本集替换为空白“ _ _”,其字符长度等于已替换长度的字符长度,其中文本集定义为以“!”结尾的单词组。 “,”,“” - “,”?“等
所以哈姆雷特的上述文字变得像
HAMLET O, _ __ _ __ _ __ _ __ _ < / em> __ _ __ _ 或者说 永恒没有解决他的经典'自我屠杀!的 _ _ 神! _ __ _ _ ,陈旧, _ __ _ __ < em> _ _ ......
为达到这个目的,我应该使用什么样的正则表达式?
答案 0 :(得分:1)
以下是使用perl
正则表达式的尝试:
perl -pe 's/(.*?)([\!\?\,;\.]|--)(.*?)([\!\?\,;\.]|--)/\1\2________________\4/g' file
输出:
HAMLET O, _ __ _ ___ !或者说永恒没有修复他的 佳能'获得自我屠杀! __ _ __ _ _ !上帝! _ __ _ 的___的 的 陈旧, __ _ __ _ _ ,似乎对我的所有用途 世界! _ __ _ 的___的 的 !啊!fie! __ _ __ _ _ ,这会增长到 种子的 _ __ _ ___ 强> 。它应该来了! __ _ __ _ _ , 不是那么多, _ __ _ ___ ;那就是 __ _ __ _ _ ,Hyperion到了 色狼;的 _ __ _ ___ 强> 。天地! __ _ __ _ _ ? 为什么, _ __ _ ___ ,好像食欲增加了 已经开始了: __ _ __ _ _ - 让我不要想 on't - _ __ _ ___ ,你的名字是女人! < / strong> __ _ __ _ _ - 一点点 月, _ __ _ ___ ,与Niobe一样, __ _ __ _ _ - 为什么 她, _ __ _ ___ - O, __ _ __ _ _ !野兽, _ __ _ ___ , 我会哀悼更久 - __ _ __ _ _ ,我父亲的 兄弟, _ __ _ ___ ,她结婚了。 __ _ __ _ _ ,最邪恶 速度, _ __ _ 的___的 的 !它不是也不可能是好的:但是 打破,<强> 强> 的 __ _ __ _ _ 强>;因为我必须抓住我的舌头。
这个解决方案取代了'__'的修正号,我还没弄明白如何用匹配的charater长度替换。