现在的位置: 首页 > 编程 > 正则表达式 > 正文

正则表达式如何匹配中文字符?如何在一段中英混合的文本中找出中文字符?

分享到: 更多

最近处理一个lrc歌词文件,英文歌词里面含有中文解释,中文解释跟英文解释不是同时出现的,如下图所示:

[01:17.739]Desert Rose   Why do you live alone
[01:20.100]沙漠玫瑰      为何你独自生存
[01:24.180]If you are sad,I'll make you leave this life
[01:25.920]若你悲哀,我将使你离开此生
[01:30.020]Are you white, blue or bloody red
[01:32.708]你是蓝色、白色、还是如血般的红
[01:38.069]All I can see is drowning in cold gray sand
[01:39.159]我所能见的全都淹没在冷灰的沙中
[01:44.937]The winds of time
[01:45.569]时间之风

知道这是什么歌曲吗?:)

中文翻译跟英文歌词不是在同一行,使用桌面歌词显示比较混乱,而且中文歌词不是很有必要的,于是想把中文歌词去掉了。一行一行删是不爽滴,这首歌有30分钟之长……正好翻一下正则表达式复习一下吧。

网上搜索到“[\u4e00-\u9fa5]”匹配所有中文字符,实际测试结果是把数字、英文、中文全部匹配了,不知道怎么回事,百度搜索到的匹配中文字符方法都是这样的。

于是去翻舍得的正则表达式实用教程,原来是这么简单! “[[:unicode:]]” (不含分号)就可以匹配中文字符了!在此感谢舍得!

很快就处理好了该歌词文件,匹配中文字符实在是很有用啊!



目前有 3 条留言    访客:2 条, 博主:1 条

  1. bunnyandyummy 2012年08月27日 5:15 上午  Δ1楼

    使用[\u4e00-\u9fa5]:
    1.Regex Match Tracer 下只会匹配中文
    2.在Notepad++等文本编辑器下则的确会匹配几乎所有字符……

    但只要”\u4e00″和”\u9fa5″转换为”一”和”龥”,使用 [一-龥] 进行匹配,两者都只会匹配中文的。

    我不知道为什么Notepad++等文本编辑器为什么不支持unicode编码的正则表达式。
    (或许应该这样说,比如,你在其输入”\u4e00\b”是无效的,但输入“一\b”则是正确的)
    但一般而言,打出”\u9fa5″比“龥”容易吧。

  2. bunnyandyummy 2012年08月27日 5:19 上午  Δ2楼

    另,文章中提及的 [[:unicode:]] 是指?——我没见如此的正则表达式….在Notepad++等中也匹配不了中文。


  3. 管理员
    古意人 2012年08月31日 9:26 下午

    我用得是EmEditor,Notepad++的正则表达式匹配确实跟EmEditor有挺大区别的,可能就是这个原因吧?

给我留言

留言无头像?

无觅相关文章插件,快速提升流量