Unicode 在 UtralEdit 正则表达式 如何表达,或者匹配汉字...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unicode 在 UtralEdit 正则表达式 如何表达,或者匹配汉字...相关的知识,希望对你有一定的参考价值。

[\u4E00-\u9FA5]+ 在Ue里面无法使用

根据楼上的提示,我做了一次实验结果是可以匹配到的。正则表达式为[\x4e00-\x9fff]+但是LZ要注意,你的文件要把ASCII编码的字符转换证Unicode否则会提示正则表达式有错误!同时,再次感谢楼上。 参考技术A 通常用[\u4E00-\u9FA5]匹配汉字,如用[\u4E00-\u9FA5]*匹配若干连续汉字。这个字符集包含繁简体中文字符,也包含一些特殊的中文符号如“卐卍”等。

补充:
抱歉,确实是我疏忽了,想当然的就回答了。重新调查了下:
UltraEdit有三个可以使用的语法集。一个是早期 UltraEdit 的原始 UltraEdit 语法(默认),二是可选的“Unix”语法,还有一个是“Perl”语法。这可以从高级选项启用。

在UE官网上查到Perl语法正则的说明中有这么一句:
\xdddd A hexadecimal escape sequence - matches the single character whose code point is 0xdddd.
就是说 \xdddd 将匹配一个代码为0xdddd十六进制转义序列的单个字符。

到这里本来以为有希望了,赶紧用 \x5b57 (就是汉字”字“的Unicode)测试,
结果发现居然不行改变了多种写法、代码测试仍通不过(如[\x5b57]、\x5b57 等),况且帮助中也提到这种表达式只能用于匹配单字符,结果最终只好作罢。

本人已尽力,坐等高手出现的同时说声抱歉。本回答被提问者和网友采纳

正则表达式:去除Unicode

背景:最近在做中文分词的时候,发现分词后的数据中出现很多特殊字符,即使进行了去停用词操作,但是特殊字符太多,也不可能都加到停用词里,所以就准备用正则去掉,正则很简单,直接上代码:

    /**
     * 正则去掉unicode等特殊字符
     * */
    private static String regularFilter(String text) {
        /**
         * p{L}或p{Letter}:来自任何语言的任何形式的字母。
         *      p{Ll}或p{Lowercase_Letter}:小写字母,带有大写字母。
         *      p{Lu}或p{Uppercase_Letter}:具有小写字母变体的大写字母。
         *      p{Lt}或p{Titlecase_Letter}:仅当单词的第一个字母大写时,出现在单词开头的字母。
         *      p{L&}或p{Cased_Letter}:存在小写和大写变体(Ll,Lu和Lt的组合)的字母。
         *      p{Lm}或p{Modifier_Letter}:一个特殊字符,用作字母。
         *      p{Lo}或p{Other_Letter}:没有小写和大写变体的字母或表意文字。
         * p{M}或p{Mark}:打算与另一个字符组合的字符(例如重音符号,变音符,封闭框等)。
         *      p{Mn}或p{Non_Spacing_Mark}:旨在与另一个字符组合而又不占用多余空间(例如重音符号,变音符号等)的字符。
         *      p{Mc}或p{Spacing_Combining_Mark}:一个字符,旨在与另一个占用额外空间的字符组合(许多东方语言中的元音符号)。
         *      p{Me}或p{Enclosing_Mark}:一个字符,它将与之组合的字符括起来(圆形,正方形,键帽等)。
         * p{Z}或p{Separator}:任何类型的空格或不可见的分隔符。
         *      p{Zs}或p{Space_Separator}:一个不可见但占用空间的空白字符。
         *      p{Zl}或p{Line_Separator}:行分隔符U + 2028。
         *      p{Zp}或p{Paragraph_Separator}:段落分隔符U + 2029。
         * p{S}或p{Symbol}:数学符号,货币符号,装饰符号,画框的字符等。
         *      p{Sm}或p{Math_Symbol}:任何数学符号。
         *      p{Sc}或p{Currency_Symbol}:任何货币符号。
         *      p{Sk}或p{Modifier_Symbol}:组合字符(标记)本身就是完整字符。
         *      p{So}或p{Other_Symbol}:不是数学符号,货币符号或组合字符的各种符号。
         * p{N}或p{Number}:任何脚本中的任何数字字符。
         *      p{Nd}或p{Decimal_Digit_Number}:除表意文字外,任何文字中的数字从零到九。
         *      p{Nl}或p{Letter_Number}:看起来像字母的数字,例如罗马数字。
         *      p{No}或p{Other_Number}:上标或下标数字,或者不是0到9的数字(表意文字中的数字除外)。
         * p{P}或p{Punctuation}:任何一种标点符号。
         *      p{Pd}或p{Dash_Punctuation}:任何类型的连字符或破折号。
         *      p{Ps}或p{Open_Punctuation}:任何类型的左括号。
         *      p{Pe}或p{Close_Punctuation}:任何类型的右括号。
         *      p{Pi}或p{Initial_Punctuation}:任何形式的开头引号。
         *      p{Pf}或p{Final_Punctuation}:任何形式的结束语。
         *      p{Pc}或p{Connector_Punctuation}:标点符号,例如连接单词的下划线。
         *      p{Po}或p{Other_Punctuation}:不是破折号,方括号,引号或连接符的任何一种标点符号。
         * p{C}或p{Other}:不可见的控制字符和未使用的代码点。
         *      p{Cc}或p{Control}:ASCII或Latin-1控制字符:0x00–0x1F和0x7F–0x9F。
         *      p{Cf}或p{Format}:不可见的格式指示符。
         *      p{Co}或p{Private_Use}:保留供私人使用的任何代码点。
         *      p{Cs}或p{Surrogate}:采用UTF-16编码的一对代理对的一半。
         *      p{Cn}或p{Unassigned}:未分配任何字符的任何代码点。
         * */
        // 替换成",",防止本来不是一起的词被分配到一起影响分词结果,同时","会被停用词去掉
        return text.replaceAll("[\pM\pZ\pS\pN\pP\pC]+", ",");
    }

如代码中注释所示,通过使用正则来匹配Unicode所属类别,直接过滤掉了Unicode,非常方便!

注意的是,正则中没有使用“p{L}”,这是因为“p{L}”也会过滤掉中文字符,需要注意,其它的自己看说明并尝试下,就比较清楚了!

参考资料:http://www.regular-expressions.info/unicode.html

 

以上是关于Unicode 在 UtralEdit 正则表达式 如何表达,或者匹配汉字...的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:去除Unicode

如何在 python 的正则表达式中指定一系列 unicode 字符? [复制]

如何使用正则表达式可移植地解析(Unicode)度数符号?

用于 unicode 大写单词的 Python 正则表达式

用 Java 正则表达式匹配(例如)一个 Unicode 字母

正则表达式和 unicode