# 【求助】正则如何查找未匹配的闭合标签

**URL:** <https://forum.freemdict.com/t/topic/15406>\
**Category:** 技术交流与词典编修\
**Tags:** 求助\
**Created:** [2022 年9 月 16 日 00:40 UTC](https://forum.freemdict.com/t/topic/15406 "2022-09-16T00:40:42Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

作者： ![dictsun](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/90db22/32.png) [@dictsun](https://forum.freemdict.com/u/dictsun)\
发布日期： [2022 年9 月 16 日 00:40 UTC](https://forum.freemdict.com/t/topic/15406/1 "2022-09-16T00:40:42Z")

</div>

正确的标签如图1

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/f/8/f80d270016992244cd8634b37bbd31f14b415a26.png)  
匹配错了的如图2  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/9/0/907798cd55224b8026c16f3e17b269015694d25d.png)  
还有一种情况是无闭合标签，中文部分之后是空格、英文句子或标点符号之类的。  
请问要找出那些不匹配的闭合的标签或遗漏掉的闭合标签，在Emeditor里正则查找该如何写？  
这里先谢过了。

---

<div class="post-metadata">

作者： ![mdxfan](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/mdxfan/32/31774_2.png) [@mdxfan](https://forum.freemdict.com/u/mdxfan)\
发布日期： [2022 年9 月 16 日 00:47 UTC](https://forum.freemdict.com/t/topic/15406/2 "2022-09-16T00:47:20Z")

</div>

用其他工具吧，好像论坛里有提到过

---

<div class="post-metadata">

作者： ![atauzki](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/atauzki/32/1365_2.png) [@atauzki](https://forum.freemdict.com/u/atauzki)\
发布日期： [2022 年9 月 16 日 00:56 UTC](https://forum.freemdict.com/t/topic/15406/3 "2022-09-16T00:56:55Z")

</div>

要闭合就用bs4读取再保存就行了，但是准确性上别做太多指望

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2022 年9 月 16 日 01:16 UTC](https://forum.freemdict.com/t/topic/15406/4 "2022-09-16T01:16:03Z")

</div>

> [@dictsun](#):
>
> 正确的标签如图1

看过去一堆的错误，如何是正确的？

建议使用Tidy

---

<div class="post-metadata">

作者： ![dictsun](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/90db22/32.png) [@dictsun](https://forum.freemdict.com/u/dictsun)\
发布日期： [2022 年9 月 16 日 01:46 UTC](https://forum.freemdict.com/t/topic/15406/5 "2022-09-16T01:46:26Z")

</div>

@mdxfan @atauzki @Vim 谢谢三位回复。看来正则无指望，就不再捣鼓了。

---

<div class="post-metadata">

作者： ![jcz777](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jcz777/32/60576_2.png) [@jcz777](https://forum.freemdict.com/u/jcz777)\
发布日期： [2022 年9 月 16 日 02:16 UTC](https://forum.freemdict.com/t/topic/15406/6 "2022-09-16T02:16:55Z")

</div>

这个，大概有个方向。  
汉字+标点+标签。

```auto
查找 ([\x{4e00}-\x{9fff}，。?：；‘’“”、`！……——（）]+)(错误标签)
替换 \1正确标签

```

---

<div class="post-metadata">

作者： ![dictsun](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/90db22/32.png) [@dictsun](https://forum.freemdict.com/u/dictsun)\
发布日期： [2022 年9 月 16 日 02:21 UTC](https://forum.freemdict.com/t/topic/15406/7 "2022-09-16T02:21:23Z")

</div>

> [@Vim](#):
>
> 看过去一堆的错误，如何是正确的？

这是我看了 [牛津中阶双解【CSS】2019.12.12](https://forum.freemdict.com/t/topic/334)  
按照其标签和css做的一次尝试。说好听一点，没学到家，难听点，学坏了。原文本来源于[《史氏汉英翻译大词典》图片词典制作记录帖子--完成版已发布](https://forum.freemdict.com/t/topic/3001)  
那儿鄙人有几个相关贴子。现在提供几个词条，如果您有时间，麻烦您看看并给予指导。  
[请帮忙.txt](https://forum.freemdict.com/uploads/short-url/4SgvL08YrCmJe36AaoDPoS3GrCf.txt) (13.1 KB)

---

<div class="post-metadata">

作者： ![jcz777](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jcz777/32/60576_2.png) [@jcz777](https://forum.freemdict.com/u/jcz777)\
发布日期： [2022 年9 月 16 日 02:21 UTC](https://forum.freemdict.com/t/topic/15406/8 "2022-09-16T02:21:51Z")

</div>

其实，你大可直接把中文英文标签删除，  
然后重新匹配汉字，加上新标签。

---

<div class="post-metadata">

作者： ![dictsun](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/90db22/32.png) [@dictsun](https://forum.freemdict.com/u/dictsun)\
发布日期： [2022 年9 月 16 日 03:10 UTC](https://forum.freemdict.com/t/topic/15406/9 "2022-09-16T03:10:19Z")

</div>

谢谢！本来想弄懂这个问题，在网上耗费了很多时间。在网上看到的也是两种处理方式，一、绕道，二、举例。举例的本人都试了，要么报错要么不是需要的结果。主要还是本人水平很低，所以现在只想直接获取答案。没有更多时间去捣鼓了。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2022 年9 月 16 日 03:16 UTC](https://forum.freemdict.com/t/topic/15406/10 "2022-09-16T03:16:41Z")

</div>

要闭合标签找我啊。

---

<div class="post-metadata">

作者： ![endnote](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/e/9de0a6/32.png) [@endnote](https://forum.freemdict.com/u/endnote)\
发布日期： [2022 年9 月 16 日 04:03 UTC](https://forum.freemdict.com/t/topic/15406/11 "2022-09-16T04:03:32Z")

</div>

> [@last\_idol](#):
>
> 要闭合标签找我啊。

兄台的工具确实强大哈，推荐。

不过对有的嵌套位置问题判定过于严格，如`<a><b><c><d></b></d></c></a>`  
会报4条错误。

手工改正，只要把`</b>`后挪一下就可消除这4条错误。

---

<div class="post-metadata">

作者： ![sxingbai](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/919ad9/32.png) [@sxingbai](https://forum.freemdict.com/u/sxingbai)\
发布日期： [2022 年9 月 16 日 05:04 UTC](https://forum.freemdict.com/t/topic/15406/12 "2022-09-16T05:04:46Z")

</div>

> [@endnote](#):
>
> 兄台的工具确实强大哈，推荐

请问在哪儿？

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2022 年9 月 16 日 05:23 UTC](https://forum.freemdict.com/t/topic/15406/13 "2022-09-16T05:23:53Z")

</div>

写得很简陋，还有很多问题，有需要可以把文本文件发我。标签错误的行号列号，会给你标注出来。

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年9 月 16 日 06:43 UTC](https://forum.freemdict.com/t/topic/15406/14 "2022-09-16T06:43:18Z")

</div>

@jcz777 请教下，为什么你要用正则引擎Onigmo的格式 [\x{4e00}-\x{9fff}]，缺省引擎的格式 [\u4e00-\u9fff] 不是更好吗？有什么说法？

---

<div class="post-metadata">

作者： ![jcz777](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jcz777/32/60576_2.png) [@jcz777](https://forum.freemdict.com/u/jcz777)\
发布日期： [2022 年9 月 16 日 06:47 UTC](https://forum.freemdict.com/t/topic/15406/15 "2022-09-16T06:47:40Z")

</div>

为了能匹配扩展区汉字。

默认的boost regex引擎做不到，只能换Onigmo了。

```auto
Emeditor汉字匹配
注意：重要一个，正则表达式引擎修改为：Onigmo。

基本汉字	[\x{3007}\x{4e00}-\x{9fff}]
扩展A区	[\x{3400}-\x{4DBF}]
扩展B区	[\x{20000}-\x{2A6DF}]
扩展C区	[\x{2A700}-\x{2B73F}]
扩展D区	[\x{2B740}-\x{2B81F}]
扩展E区	[\x{2B820}-\x{2CEA1}]
扩展F区	[\x{2CEB0}-\x{2EBE0}]
扩展G区	[\x{30000}-\x{3134A}]
兼容	[\x{F900}-\x{FAD9}]
兼容扩展	[\x{2F800}-\x{2FA1D}]
部首扩展	[\x{2E80}-\x{2EF3}]
注音	[\x{3105}-\x{312F}]
笔画	[\x{31C0}-\x{31E3}]
康熙部首	[\x{2F00}-\x{2FD5}]
注音扩展	[\x{31A0}-\x{31BA}]
私用SSP	[\x{E000}-\x{F8FF}]
私用PUA-A	[\x{F0000}-\x{FFFFF}]
私用PUA-B	[\x{100000}-\x{10FFFF}]

```

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年9 月 16 日 06:57 UTC](https://forum.freemdict.com/t/topic/15406/16 "2022-09-16T06:57:14Z")

</div>

就是说，如果选默认的boost regex引擎，用这个式子 [\u4e00-\u9fff] 也搜不到扩展区汉字？这就不太好理解了，不是 4e00~9fff 区间对了就能匹配到吗？

我的理解，不同引擎的差别只是写法不同，\x{4e00} \u4e00，难道还有别的不同？

---

<div class="post-metadata">

作者： ![jcz777](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jcz777/32/60576_2.png) [@jcz777](https://forum.freemdict.com/u/jcz777)\
发布日期： [2022 年9 月 16 日 07:04 UTC](https://forum.freemdict.com/t/topic/15406/17 "2022-09-16T07:04:03Z")

</div>

基本区汉字4e00-9fff有20992个汉字，一般来说，用这个范围就可以了。  
但是经常会碰到扩展区的汉字，boost regex就匹配不了。  
（最常用的新华字典都有一百多个B区汉字）

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年9 月 16 日 07:13 UTC](https://forum.freemdict.com/t/topic/15406/18 "2022-09-16T07:13:22Z")

</div>

谢谢解答！还是不太理解这两个引擎为什么会有这个差别。

EmEditor用扩展A区第一个字“㐀”试验发现：

- 缺省引擎 \u3400 搜不到
- 缺省引擎 \x{3400} 可以搜到
- Onigmo引擎 \u3400 可以搜到
- Onigmo引擎 \x{3400} 可以搜到

根据这个网页的介绍，Onigmo引擎下匹配所有汉字可以用 \p{Han}，刚试了下 “㐀” 这个字是可以匹配到的  
\<\>[EmEditor v15.7.0 beta 1 – EmEditor (Text Editor)](https://www.emeditor.com/emeditor-core/emeditor-v15-7-0-beta-1/)\<\>

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2022 年9 月 16 日 07:57 UTC](https://forum.freemdict.com/t/topic/15406/19 "2022-09-16T07:57:11Z")

</div>

使用`\p{Han}`，需要考虑词典文本字符覆盖的范围。Unicode已经更新到15， 而Onigmo目前只支持到Unicode 12，也就是说对于13-15的汉字，用`\p{Han}`，是匹配不到的。

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年9 月 16 日 08:00 UTC](https://forum.freemdict.com/t/topic/15406/20 "2022-09-16T08:00:01Z")

</div>

谢谢！\<\>\<\>\<\>

[下一页](https://forum.freemdict.com/t/topic/15406.md?page=2)
