精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【已解决】正则表达式匹配中文的问题。 (https://bbs.et8.net/bbs/showthread.php?t=1360082)

wgf4242 2018-06-06 01:27:56

【已解决】正则表达式匹配中文的问题。
 
regexp: [\u4E00-\u9FA5]
在Emeditor/Sublime中测试,匹配到了数字和字母,而且我测试时[\u9FA5]这样都能匹配到所有的汉字、字母、数字

代码:

J00我是中文字
我想要只匹配中文。

【已解决】使用
[\x{4e00}-\x{9fa5}]

shengweiice 2018-06-06 07:04:46

是不是本身的编码问题, [\u4E00-\u9FA5]只适用于一种编码,而你的不是呢

[\u9FA5]能匹配所有的猜测是,这个的意思是匹配任何含有\u9 或者F,或者A,或者5的字符

以上两个均为瞎猜

blacklong 2018-06-06 09:17:55

啥编程语言?或者啥工具?
\uxxxx这种是unicode编码,不是所有语言或工具都支持的。

简单的办法是不用正则,挨个取字符,看utf-8时的字节数,如果是三字节,就是文字(不一定是中文)。

MacOS 2018-06-06 09:22:49

这个问题很早就出现过,后来查了下2013年有过讨论,
https://bbs.et8.net/bbs/showthread.php?t=1043892
从43楼开始就是这方面的问题了,当时是试出PERL引擎都有这样的情况
以现在的SUBLIME试验了一下,基本结论还是对的,\u实际是被解释为非小写非符号字符,然后后面的字符实际被当成列举了,也就是你写[\u9FA5],实际是包括所有非小写非符号字符,一个9,一个F,一个A,一个5,自然有数字59,还有各种大写字母

chenyf 2019-12-07 23:23:26

使用 Raku (之前叫 Perl 6):

.Str.say for 'J00我是中文字'.match(/<:Hani>/,:g);

foxme 2019-12-08 17:51:53

我也感兴趣这个匹配中文的问题.

结论:

中文繁体, 中文简体, 和日文是分享一些字符的
韩文独立, 且韩文使用半角符号.

对于中文匹配来说, 需要先确定好语言
之后考虑是否匹配中文标点.

https://s2.ax1x.com/2019/12/08/QadTHK.md.png
https://s2.ax1x.com/2019/12/08/QadInx.md.png
https://s2.ax1x.com/2019/12/08/QadoB6.md.png
https://s2.ax1x.com/2019/12/08/Qad4j1.md.png
https://s2.ax1x.com/2019/12/08/Qadf39.md.png
https://s2.ax1x.com/2019/12/08/QadHAO.md.png

mini dragon 2019-12-09 11:08:00

引用:

作者: foxme (文章 17486916)
我也感兴趣这个匹配中文的问题.

结论:

中文繁体, 中文简体, 和日文是分享一些字符的
韩文独立, 且韩文使用半角符号.

对于中文匹配来说, 需要先确定好语言
之后考虑是否匹配中文标点.

[url=https://imgse.com/i/QadTHK][img]https://s2.ax1x.com/201......

好,这个收藏备用。


所有时间均为北京时间, 现在的时间是 00:30:15.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号