-2

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

示例文本:

哈姆雷特 哦,这太硬的肉会融化解冻,化成露水!或者说永恒者没有让他的教规“反对自残”!哦天啊!上帝!多么疲倦、陈旧、平淡和无利可图,在我看来,这世界的所有用途!别闹!啊呸!这是一个未除草的花园,它长出了种子;事物在本质上排名和粗略 仅拥有它。应该到这个地步!但是死了两个月:不,不是那么多,不是两个:如此出色的国王;对这个来说,Hyperion 对一个色狼来说就是;如此爱我的母亲,以至于他可能不会被天堂的风吹走,太粗暴地访问她的脸。天地间!我必须记住吗?为什么,她会依附在他身上, 好像胃口因它所吃的东西而增加了似的:然而,在一个月之内—— 让我别想—— 虚弱,你的名字是女人!—— 一个月, 或者在那些鞋子旧了之前,她就跟着我可怜的父亲的身体,像尼奥贝一样,流下了眼泪:——为什么是她,甚至是她——哦,上帝!一头野兽,它需要理性的话语,会哀悼更长的时间——嫁给我的叔叔,我父亲的兄弟,但不像我的父亲,就像我对赫拉克勒斯一样:一个月之内:最不义的眼泪的盐还没有留下红肿的眼眶,她结了婚。哦,最邪恶的速度,以如此灵巧的方式张贴乱伦的床单!不是,也不是不会好起来的:但伤透了,我的心;因为我必须闭嘴。但在赫拉克勒斯看来,我和我父亲一样不一样: 一个月之内: 在最不义的泪水的盐分还没有让她受苦的眼睛里泛红之前,她就结婚了。哦,最邪恶的速度,以如此灵巧的方式张贴乱伦的床单!不是,也不是不会好起来的:但伤透了,我的心;因为我必须闭嘴。但在赫拉克勒斯看来,我和我父亲一样不一样: 一个月之内: 在最不义的泪水的盐分还没有让她受苦的眼睛里泛红之前,她就结婚了。哦,最邪恶的速度,以如此灵巧的方式张贴乱伦的床单!不是,也不是不会好起来的:但伤透了,我的心;因为我必须闭嘴。

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

所以上面来自哈姆雷特的文字变成了

哈姆雷特 O, _ __ _ __ _ __ _ __ _ __ _ __ _或者说永恒者没有修正他的经典“反对自残”!_ _ 上帝!_ __ _ _,陈旧的,_ __ _ __ _ _ ......

我应该使用什么正则表达式来实现这一目标?

4

1 回答 1

1

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

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

输出:

哈姆雷特 O, _ __ _ ___!或者说永恒者没有让他的教规“反对自残”!_ _ __ _ _!上帝!_ __ _ ___, 陈旧的,__ _ __ _ _,在我看来,这个世界的所有用途!_ __ _ ___!啊呸!__ _ __ _ _ , 长成种子; _ __ _ ___. 应该到这个地步!_ _ __ _ _,没那么多,_ __ _ ___; 那是,__ _ __ _ _,亥伯龙对色狼;_ __ _ ___. 天地间!_ _ __ _ _ ? 为什么,_ __ _ _, 好像食欲增加了它所吃的东西:然而,__ _ __ _ _ -- 让我别想了-- _ __ _ ___,你的名字是女人!_ _ __ _ _ -- 一个小月,_ __ _ ___, 像尼奥贝,_ _ __ _ _ --为什么她,_ __ _ ___——哦,_ _ __ _ _!野兽,_ __ _ ___,会哀悼更长的时间——_ _ __ _ _,我父亲的兄弟,_ __ _ ___, 她结婚了。_ _ __ _ _,最邪恶的速度,_ __ _ ___!它不是,也不是不能好起来的:但是打破,_ _ __ _ _ ; 因为我必须闭嘴。

此解决方案替换了 '__' 的固定数量,我还没有弄清楚如何用匹配的字符长度替换。

于 2013-09-27T10:54:59.840 回答