查看: 369|回复: 6
打印 上一主题 下一主题

[求助] 请教一个有关替换的正则表达式

[复制链接]

该用户从未签到

14

主题

112

回帖

1032

积分

解元

Rank: 5Rank: 5

积分
1032
跳转到指定楼层
1
发表于 2016-1-19 23:20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下,类似下面的

</>
sheep<br>
<<名词>><br>
(pl. ~)<br>
1 (C)羊,绵羊<br>
a flock of ~ <br>
一群羊<br>
→ black sheep<br>
count ~ <br>
数羊<br>
One may [might] as well be hanged for a ~ as (for) a lamb. <br>
((谚))一不做,二不休<br>
2 (C)胆小者,懦弱的人<br>
3 (U)羊皮 (sheepskin) <br>
make [cast] sheep's eyes at <br>
﹍对…抛媚眼<br>
separate the sheep and [from] the goats <br>
区别善人与恶人 [能干的人与无能的人] <br>
wolf in sheep's clothing→ wolf.<br>
</>

如何将每个词条内的~替换回该词条?
谢谢!

该用户从未签到

29

主题

424

回帖

5232

积分

会元

Rank: 7Rank: 7Rank: 7

积分
5232

灌水大神章小蜜蜂章笑傲江湖章

2
发表于 2016-1-20 00:48:04 来自手机 | 只看该作者
直接匹配所有词头和~,分别设为1和2,然后,1不变、用1替换2,来回几次后就全部替换好了

该用户从未签到

29

主题

424

回帖

5232

积分

会元

Rank: 7Rank: 7Rank: 7

积分
5232

灌水大神章小蜜蜂章笑傲江湖章

3
发表于 2016-1-20 11:48:43 来自手机 | 只看该作者
软件不同写法也会有所不同,我写个比较常规的正则你可以参考下:
比如你贴出的这个,
1,如果词条是分成多行的那先把单个词条内的多行改成单行(这个应该都会吧)
2,然后
搜索:(^.*?)(<br>.*?)(~)
替换:\1\2\1
3,反复替换几次直到没有~为止。

该用户从未签到

14

主题

112

回帖

1032

积分

解元

Rank: 5Rank: 5

积分
1032
4
 楼主| 发表于 2016-1-21 13:27:59 | 只看该作者
好的,我用ultraedit的perl引擎进行替换,中途都是程序出现故障。回头我试用其它编辑软件再试一下,谢谢!
  • TA的每日心情
    开心
    2018-5-26 23:41
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    3

    主题

    77

    回帖

    888

    积分

    举人

    Rank: 4

    积分
    888
    5
    发表于 2016-1-29 12:56:34 | 只看该作者
    用notepad++
    查找>$\r\n\s(\w*)(<br>[^~/]*)(~)
    替换为>\r\n \1\2\1
    多替换几次到没有就可以了

    该用户从未签到

    43

    主题

    448

    回帖

    3793

    积分

    贡士

    Rank: 6Rank: 6

    积分
    3793

    灌水大神章小蜜蜂章笑傲江湖章

    7
    发表于 2016-2-2 16:26:58 | 只看该作者
    本帖最后由 zhlpen 于 2016-2-2 16:52 编辑

    删除词条下的正文中用~来代替本词条的省略符

    例如:
    </>
    book
    1 (C)<br>
    a. 书,书籍; 著作<br>
    read [write] a ~<br>
    读 [著] 书<br>
    → closed book,open book.<br>
    b. 知识 [教训] 的泉源, (…之) 书<br>
    the ~ of Nature <br>
    自然之书<br>
    </>
    bag
    1 (C)<br>
    a. 袋<br>
    a paper ~ <br>
    纸袋<br>
    → carry bag,doggie bag,tote bag.<br>
    b. 猎物袋<br>
    2 (C)<br>
    a. 提袋; 旅行袋,提包<br>
    a traveling ~ <br>
    旅行袋<br>
    </>

    提供一个方法,在emeditor中测试可以:
    1.在第一行book下面的第一行加空格</>\n(.*?)\n(.*?)替换成</>\n\1\n \2;
    2.所有\n替换成""(无);
    3.</>替换成\n<\>\n;
    4.^(.*?)( \(.*?)~(.*)$替换成\1\2\1\3,可以多替换几次;
    5.<br>替换成<br>\n.
    6.<>\n(.*?)( )替换成\1\n
    7.空行替换成</>: 查找^[ \t]*\n替换\1</>\n

    注意里面的空格,此方法经过测试可用。