正则式的一个问题

请问怎样在Emeditor上把

ORIGIN: originally denoting a boundary or starting line for sports competitors.

都改为:
ORIGIN: originally denoting a boundary or starting line for sports competitors.

也就是只有"ORIGIN:" 以黑体显示,之后的文字都一般格式显示。

类似的句子近1000处,不能一一改,自己又没能力…

有推荐的 正则式入门书吗? 谢谢!

单独成行吗?

不是单独成行,而是一行中的内容。例如:

sesame sesame /ˈsesəmɪ/
noun〔mass noun〕
a tall annual herbaceous plant of tropical and subtropical areas of the Old World, cultivated for its oil-rich seeds 芝麻, 胡麻。
Sesamum indicum, family Pedaliaceae. 拉丁名Sesamum indicum, 胡麻科。
   1.1 (sesame seed) the edible seeds of this plant, which are used whole or have the oil extracted 芝麻籽。
短语:
   open sesame → a free or unrestricted means of admission or access 法宝: academic success is not an automatic open sesame to the job market. 学业上的成功并非自由进入就业市场的法宝。 ORIGIN: from the magic formula in the tale of Ali Baba and the Forty Thieves (see ALI BABA).
词源: late Middle English: via Latin from Greek sēsamon, sēsamē; compare with Arabic simsim.

这是 新牛津英汉双解大词典 的stardict版本。

'<b>ORIGIN: *([a-zA-Z ,\.\?!\(\)]*)</b>'替换成'<b>ORIGIN:</b> \1'

\1表示前面()中匹配到的内容,也就是ORIGIN: 后的内容。[]表示里面的任意一个字符,这里是a到z,A到Z,空格,半角逗号、句号、问好、感叹号、括号。后面跟着的*表示那一个字符重复任意次,包括零次

2 个赞

改好了,真是感谢不尽!

发现还是有些没改过来,例如特殊符号:

ORIGIN: from Arabic ḥākim ‘ruler’.

更多的是内含html tags的,最多是斜线符号:

ORIGIN: popularized by the film High Noon (1952).

得怎么修改呢?谢谢!

1 个赞

把其他符号加在[]里就行了,下面加了0-9、ḥ、ā、‘、’、/、<、>。因为[]中匹配的字符里可以组合成</b>,所以需要把后面的*改成+?,前者匹配符合条件最长的字符串,后者是最短的

'<b>ORIGIN: *([0-9a-zA-Z ,\.\?!\(\)<>/ḥā‘’]+?)</b>'

一举修改了不少,谢谢!发现非英语的字母很多,只能再手动加入了,但真是帮了大忙!

知道是什么字母的话,可以用a-z的格式添加,比如西里尔字母а-я、А-Я。

如果词典的html写得比较规范的话,可以直接用<b>ORIGIN: *(.+?)</b>,其中.表示任意字符。这种方法比较糙,如果html写得不规范,比如<b>没有都关闭,就会出错。

1 个赞

*? +? 非贪婪匹配,找到最近的后面字符就不再继续找,。
*?最短可以是0个字符,而+?最少1个字符。
1
0

1 个赞

推荐这个正则里的金刚钻,好像用的人不多,可解很多疑难杂症。

排除多个特定字符串:

((?!(<b>|<\/b>)).|\n|\r)*

常见用法而已,说是金刚钻有点过了,还是多看看书吧