喬治兄 发表于 2019-5-7 21:05:24

懇請正則大師再賜教 : 正則語法.....感恩大德

本帖最后由 喬治兄 于 2019-5-8 02:57 编辑

此問題實為[求助] 請賜教:正則語法 .....之未完成滴 Part 2.https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=33536&extra=
盼 站上同好對正則有研究 之 大師 再次蒞臨指導不吝惜滴賜教 .....謝謝...感恩
簡化問題如下也就是如何在所有和 headword 相同的內容中加上----->①headword②
aa
<a href="entry://aa">①aa②</a> , <a href="entry://AAA">①AA②A</a> , <a href="entry://aah">①aa②h</a> , <a href="entry://aardvark">①aa②rdvark</a> , <a href="entry://aardwolf">①aa②rdwolf</a> , <a href="entry://Aaron">①Aa②ron</a> , <a href="entry://Aaron's rod">①Aa②ron's rod</a>
</>






問題如附件:
處理前
boy
<b>boy</b><br>
<a href="entry://altar boy">altar boy</a> , <a href="entry://attaboy">attaboy</a> , <a href="entry://backroom boy">backroom boy</a> , <a href="entry://ball boy">ball boy</a> , <a href="entry://bellboy">bellboy</a> , <a href="entry://blue-eyed boy">blue-eyed boy</a> , <a href="entry://boy">boy</a> , <a href="entry://Boy Scout">boy Scout</a> , <a href="entry://boy wonder">boy wonder</a> , <a href="entry://boyar">boyar</a> , <a href="entry://boycott">boycott</a> , <a href="entry://boyfriend">boyfriend</a> , <a href="entry://boyhood">boyhood</a> , <a href="entry://boyish">boyish</a> , <a href="entry://boyishly">boyishly</a> , <a href="entry://Boyle">boyle</a> , <a href="entry://boyo">boyo</a> , <a href="entry://boysenberry">boysenberry</a> , <a href="entry://busboy">busboy</a> , <a href="entry://cabin boy">cabin boy</a> , <a href="entry://carboy">carboy</a> , <a href="entry://choirboy">choirboy</a> , <a href="entry://cowboy">cowboy</a> , <a href="entry://cowboy hat">cowboy hat</a> , <a href="entry://doughboy">doughboy</a> , <a href="entry://ex-boyfriend">ex-boyfriend</a> , <a href="entry://fair-haired boy">fair-haired boy</a> , <a href="entry://flamboyance">flamboyance</a> , <a href="entry://flamboyancy">flamboyancy</a> , <a href="entry://flamboyant">flamboyant</a> , <a href="entry://flamboyantly">flamboyantly</a> , <a href="entry://hautboy">hautboy</a> , <a href="entry://highboy">highboy</a> , <a href="entry://homeboy">homeboy</a> , <a href="entry://houseboy">houseboy</a> , <a href="entry://linkboy">linkboy</a> , <a href="entry://lowboy">lowboy</a> , <a href="entry://mama's boy">mama's boy</a> , <a href="entry://messenger boy">messenger boy</a> , <a href="entry://mother's boy">mother's boy</a> , <a href="entry://newsboy">newsboy</a> , <a href="entry://office boy">office boy</a> , <a href="entry://old boy">old boy</a> , <a href="entry://pageboy">pageboy</a> , <a href="entry://playboy">playboy</a> , <a href="entry://ploughboy">ploughboy</a> , <a href="entry://plowboy">plowboy</a> , <a href="entry://poor boy">poor boy</a> , <a href="entry://potboy">potboy</a> , <a href="entry://schoolboy">schoolboy</a> , <a href="entry://stableboy">stableboy</a> , <a href="entry://tallboy">tallboy</a> , <a href="entry://tomboy">tomboy</a> , <a href="entry://tomboyish">tomboyish</a> , <a href="entry://whipping boy">whipping boy</a> , <a href="entry://wide boy">wide boy</a>
</>

處理成如下


boy
<b>boy</b><br>
<a href="entry://altar boy">altar <mark>boy</mark></a> , <a href="entry://attaboy">atta<mark>boy</mark></a> , <a href="entry://backroom boy">backroom <mark>boy</mark></a> , <a href="entry://ball boy">ball <mark>boy</mark></a> , <a href="entry://bellboy">bell<mark>boy</mark></a> , <a href="entry://blue-eyed boy">blue-eyed <mark>boy</mark></a> , <a href="entry://boy"><mark>boy</mark></a> , <a href="entry://Boy Scout"><mark>boy</mark> Scout</a> , <a href="entry://boy wonder"><mark>boy</mark> wonder</a> , <a href="entry://boyar"><mark>boy</mark>ar</a> , <a href="entry://boycott"><mark>boy</mark>cott</a> , <a href="entry://boyfriend"><mark>boy</mark>friend</a> , <a href="entry://boyhood"><mark>boy</mark>hood</a> , <a href="entry://boyish"><mark>boy</mark>ish</a> , <a href="entry://boyishly"><mark>boy</mark>ishly</a> , <a href="entry://Boyle"><mark>boy</mark>le</a> , <a href="entry://boyo"><mark>boy</mark>o</a> , <a href="entry://boysenberry"><mark>boy</mark>senberry</a> , <a href="entry://busboy">bus<mark>boy</mark></a> , <a href="entry://cabin boy">cabin <mark>boy</mark></a> , <a href="entry://carboy">car<mark>boy</mark></a> , <a href="entry://choirboy">choir<mark>boy</mark></a> , <a href="entry://cowboy">cow<mark>boy</mark></a> , <a href="entry://cowboy hat">cow<mark>boy</mark> hat</a> , <a href="entry://doughboy">dough<mark>boy</mark></a> , <a href="entry://ex-boyfriend">ex-<mark>boy</mark>friend</a> , <a href="entry://fair-haired boy">fair-haired <mark>boy</mark></a> , <a href="entry://flamboyance">flam<mark>boy</mark>ance</a> , <a href="entry://flamboyancy">flam<mark>boy</mark>ancy</a> , <a href="entry://flamboyant">flam<mark>boy</mark>ant</a> , <a href="entry://flamboyantly">flam<mark>boy</mark>antly</a> , <a href="entry://hautboy">haut<mark>boy</mark></a> , <a href="entry://highboy">high<mark>boy</mark></a> , <a href="entry://homeboy">home<mark>boy</mark></a> , <a href="entry://houseboy">house<mark>boy</mark></a> , <a href="entry://linkboy">link<mark>boy</mark></a> , <a href="entry://lowboy">low<mark>boy</mark></a> , <a href="entry://mama's boy">mama's <mark>boy</mark></a> , <a href="entry://messenger boy">messenger <mark>boy</mark></a> , <a href="entry://mother's boy">mother's <mark>boy</mark></a> , <a href="entry://newsboy">news<mark>boy</mark></a> , <a href="entry://office boy">office <mark>boy</mark></a> , <a href="entry://old boy">old <mark>boy</mark></a> , <a href="entry://pageboy">page<mark>boy</mark></a> , <a href="entry://playboy">play<mark>boy</mark></a> , <a href="entry://ploughboy">plough<mark>boy</mark></a> , <a href="entry://plowboy">plow<mark>boy</mark></a> , <a href="entry://poor boy">poor <mark>boy</mark></a> , <a href="entry://potboy">pot<mark>boy</mark></a> , <a href="entry://schoolboy">school<mark>boy</mark></a> , <a href="entry://stableboy">stable<mark>boy</mark></a> , <a href="entry://tallboy">tall<mark>boy</mark></a> , <a href="entry://tomboy">tom<mark>boy</mark></a> , <a href="entry://tomboyish">tom<mark>boy</mark>ish</a> , <a href="entry://whipping boy">whipping <mark>boy</mark></a> , <a href="entry://wide boy">wide <mark>boy</mark></a>
</>

ogrishman 发表于 2019-5-8 09:54:23

sss 发表于 2019-5-8 09:35
发帖前我还真试过了, 没搞成功.

抱歉啊,看来不试试还真不行,我虽然写的时候考虑到这个了,但是因为乔治兄只提供了一个entry,我也就没有测试多个entry时候的情况,结果果然有问题...实践是检验真理的唯一标准啊...
我修改了一下,您看看:
https://regex101.com/r/oXh7Ce/2

sss 发表于 2019-5-8 09:33:02

类似的事儿, 我做过, 也帮别人做过.
一种简单的思路供参考:

1. 为安全起见, 先进行预变换, 譬如按MDX词头+内容排成一排; 这么做的另外目的是方便一些可以直接按行进行编辑的工具.
2. 预变换:联合标记目标及词头; 譬如将<a href="entry:///\([^<>]\{-0,}\)">变换成<a>boy<a href="entry:///\([^<>]\{-0,}\)">
3. 主变换:将<a>boy<a href="entry://poor boy">poor boy</a>变换成<a>boy<a href="entry://poor boy">poor <mark>boy</mark></a>
* 这一步有的工具可以一个命令行搞定
4. 复原变换: 去掉<a>boy<a href="entry://poor boy">poor boy</a>中的<a>boy
5. 复原变换: 恢复成多行

jonah_w 发表于 2019-5-7 21:56:42

本帖最后由 jonah_w 于 2019-5-7 22:00 编辑

完全用正则的话,非常不方便,需要重复很多次替换。
https://regex101.com/r/CXZIs9/2
正则本身不支持什么逻辑运算,这个替换需求需要获取前面的一个值,然后后面对应修改,这种要么编辑器提供某种智能支持,要么用一些正则增强工具,如sed, awk, perl之类的。

喬治兄 发表于 2019-5-7 23:20:26

jonah_w 发表于 2019-5-7 21:56
完全用正则的话,非常不方便,需要重复很多次替换。
https://regex101.com/r/CXZIs9/2
正则本身不支持什么 ...

jonah_w 兄:
sed, awk, perl 都不會
{:4_91:}

ogrishman 发表于 2019-5-8 07:14:27

本帖最后由 ogrishman 于 2019-5-8 10:12 编辑

用论坛里那个mdx多功能转换器呀,有一个功能不就刚好是干这个的,我试了一下应该就是你想要的效果
https://i.loli.net/2019/05/08/5cd23a9bef8d4.png

有朋友私信问我要下载地址,我也记不清什么时间在论坛上下载的,有人要我就分享一下:
链接: https://pan.baidu.com/s/1KR3CJWngDZG6tZy_GJINmw
提取码: c339

ogrishman 发表于 2019-5-8 07:34:19

本帖最后由 ogrishman 于 2019-5-8 07:36 编辑

我研究了一下直接用正则表达式也可以,不过好像非常麻烦.....,这么复杂,性能肯定不好,你可以试试。
https://regex101.com/r/oXh7Ce/1

sss 发表于 2019-5-8 09:13:30

ogrishman 发表于 2019-5-8 07:34
我研究了一下直接用正则表达式也可以,不过好像非常麻烦.....,这么复杂,性能肯定不好,你可以试试。
http ...

如果对整个文件进行应用呢? 不知道有否考虑过, 谢谢

ogrishman 发表于 2019-5-8 09:24:55

可以的,你试试,这个我考虑到了

sss 发表于 2019-5-8 09:35:36

ogrishman 发表于 2019-5-8 09:24
可以的,你试试,这个我考虑到了

发帖前我还真试过了, 没搞成功.

喬治兄 发表于 2019-5-8 10:15:41

本帖最后由 喬治兄 于 2019-5-8 10:30 编辑

ogrishman 发表于 2019-5-8 07:34
我研究了一下直接用正则表达式也可以,不过好像非常麻烦.....,这么复杂,性能肯定不好,你可以试试。
http ...

感謝 ogrishman 兄指點迷津, 解決小弟此複雜的正則語法.....謝謝..感恩....
ogrishman 兄:
感謝您提供兩個解決方法...........太感謝您滴幫忙..........讚! 讚! 讚! .................
{:4_105:}

喬治兄 发表于 2019-5-8 10:25:19

sss 发表于 2019-5-8 09:33
类似的事儿, 我做过, 也帮别人做过.
一种简单的思路供参考:

感謝 sss 兄 提供另一可行之解決思路
昨天請教流星兄似乎也是此思路......
只是沒搞懂他的意思不知所云{:4_105:}
經兄之說明才有點腦洞開竅
感謝.........................讚! 讚! 讚! ..............{:4_105:}

喬治兄 发表于 2019-5-8 10:38:10

ogrishman 发表于 2019-5-8 07:14
用论坛里那个mdx多功能转换器呀,有一个功能不就刚好是干这个的,我试了一下应该就是你想要的效果




感謝 ogrishman 兄不僅解了問題還提供此工具.....謝謝您
{:4_104:}

Android 发表于 2019-5-8 10:41:35

學一學python吧

喬治兄 发表于 2019-5-8 10:45:57

Android 发表于 2019-5-8 10:41
學一學python吧

Android 兄:
python 實在.........哈! 哈! 哈!
看到編程和正則就偏頭痛..........{:4_105:}

simonfire 发表于 2019-5-8 14:56:06

喬治兄 发表于 2019-5-8 10:45
Android 兄:
python 實在.........哈! 哈! 哈!
看到編程和正則就偏頭痛.......... ...

不想学也行,下次直接把全部源码上传,别人处理好再给你就行。这样还最简单快捷,像我就可以代劳。

喬治兄 发表于 2019-5-8 15:08:41

simonfire 发表于 2019-5-8 14:56
不想学也行,下次直接把全部源码上传,别人处理好再给你就行。这样还最简单快捷,像我就可以代劳。 ...

simonfire 兄:
檔案太大傳不上來
{:4_105:}

jonah_w 发表于 2019-5-8 15:58:16

本帖最后由 jonah_w 于 2019-5-8 16:06 编辑

ogrishman 发表于 2019-5-8 09:54
抱歉啊,看来不试试还真不行,我虽然写的时候考虑到这个了,但是因为乔治兄只提供了一个entry,我也就没 ...
这个正则厉害了,没想到能这么写。另外,原来JavaScript的正则居然支持逆向不定长环视… 厉害 {:4_94:}

我稍微改了下,使其不匹配<b></b>之间的词头。
https://regex101.com/r/oXh7Ce/3
p.s. 不过非常可惜,试了下正则支持力度非常大的Sublime也不支持逆向不定长…
这个替换看来只能放在那个网页里进行,或者写js程序了。

不知道哪个编辑器支持逆向不定长环视。{:4_94:}

y8888 发表于 2019-5-8 17:39:46

把文件传上来,我或许可以帮你处理好。

喬治兄 发表于 2019-5-9 00:20:51

y8888 发表于 2019-5-8 17:39
把文件传上来,我或许可以帮你处理好。

感謝 y8888 兄熱心關懷
小弟最後已土法煉鋼法搞定啦.....
Thanks a lot
{:4_105:}

喬治兄 发表于 2019-5-9 00:29:42

ogrishman 发表于 2019-5-8 09:54
抱歉啊,看来不试试还真不行,我虽然写的时候考虑到这个了,但是因为乔治兄只提供了一个entry,我也就没 ...

ogrishman 兄:
感謝您提供多條正則......Thanks a lot.....
小弟最後以土法煉鋼搞定
謝謝您.....再次向您致萬分感謝
也向其他 sss 兄, jonah_w 兄,simonfire 兄,..Android 兄,.y8888 兄....謝謝

Thanks Again

{:4_104:}
页: [1]
查看完整版本: 懇請正則大師再賜教 : 正則語法.....感恩大德