掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 668|回复: 13

[求助] 正则如何匹配汉字?

[复制链接]
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2021-2-18 21:47:01 | 显示全部楼层 |阅读模式
    最近OCR了一个词组词典,获得一个全书索引,每行如下:
    4 e/ n$ }% v1 R7 `6 \* d( ^5 O% [/ ^0 m$ B
    add up加起来;说得通6 }) J; [2 J% @' _: |$ d
    ) J+ e7 G. W& n, o& {4 |9 z
    左边是词组,右边是中文释义,现在想将中文释义换行从头输出,所以需要匹配第一个汉字前面加\r\n换行符号。6 Z0 H2 Z! N# c( J1 S3 w6 ?
    ) k9 X, F# w' G- I
    网上查了匹配中文字符的正则表达式: [u4e00-u9fa5]) B0 W$ T, q2 ^, N
    但在NOTEPAD ++ 和 EMEDITOR里试了都么有用,它们都是中文字符英文字母一块匹配上了。- b" k' u% @6 H% p
    " u+ c, ^$ A, T% t5 P- t! _- A
    有高手指点一下?谢谢!
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-18 22:36:52 | 显示全部楼层
    本帖最后由 Mandolin 于 2021-2-18 22:39 编辑
    4 Z2 U; p" ^7 J9 j, V
    ; [+ L* Y1 ^$ q4 J* @# oEmEditor 里查找:6 `- T3 ^+ N3 O. z
    1. ([a-z])( *)([\x{4e00}-\x{9fa5}])
    复制代码
    0 |) D5 I. y8 |7 B! W: @4 \
    替换为:, u3 O' a$ m: a2 C! W
    1. \1\n\3
    复制代码

    评分

    1

    查看全部评分

  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2021-2-18 23:35:48 | 显示全部楼层
    本帖最后由 mikeee 于 2021-2-18 23:39 编辑 ! n6 P) ~# z! s& Y
    - u4 K: {, Y6 k+ u
    notepad++里- M% k# {: F  g) ?! R

    ( v/ P$ H5 z# _- L1 w
    1. ([^一-龥]+)([一-龥].*)
    复制代码
    5 F# Y8 p+ `9 `
    替代/ [6 s) c- }( R4 Q
    1. \1\n\2
    复制代码

    ( ~, t' ^+ t6 u4 @4 |/ _  V! b2 j- V! j
    [一-龙](对应[\u4e00-\u9f99])或[一-龟](对应[\u4e00-\u9f9f])或[一-龥](对应[\u4e00-\u9fa5])都可以,\u9f9a-\u9fa5(除了龟\u9f9f)都是些不常用字。

    评分

    1

    查看全部评分

  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-18 23:49:34 | 显示全部楼层
    Mandolin 发表于 2021-2-18 22:36
    ( t( j8 J% A; k2 ZEmEditor 里查找:+ q( h8 m* w2 [- Y' {3 X
    7 ?2 d% T* [2 ^& @0 B; @+ |
    替换为:
    % |6 n1 k/ L5 @  U2 b
    有用!感谢大师!
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2021-2-19 20:08:28 | 显示全部楼层
    请问有没有日文五十音+日文汉字的?
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-21 19:50:30 | 显示全部楼层
    Mandolin 发表于 2021-2-18 22:36
    ! m; z8 A0 \) R: F2 `EmEditor 里查找:
    ! H# E) Z$ l) `5 k  l' U5 F) D) W& Z( I1 D% @7 {7 u; c5 d
    替换为:

    4 w7 G/ u; a- S3 `借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?
    / i4 U) a5 j3 v: V" w5 V7 {用“.*?”,然后勾选了“高级”选项卡的“正则表达式“.”可匹配换行符”也没用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-22 07:19:18 | 显示全部楼层
    “.”不包括换行的,匹配换行:/ K4 G# g1 ?$ M& y
    1. .+\n.+
    复制代码

    ' n+ l* ?0 Z* x4 {
    8 _) A% s" X4 t& B

    评分

    1

    查看全部评分

  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 16:29:00 | 显示全部楼层
    本帖最后由 starmars 于 2021-2-22 16:30 编辑
    : W0 X( u+ I& @: h% k1 @" e' u
    wnsfzf 发表于 2021-2-21 19:50% U/ p8 y% T4 I( r4 k
    借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?
    7 ~8 \, |' T7 f9 R; d/ F用“.*?”,然后勾选了“高级”选项卡的 ...

    2 J" W+ U) \  S$ {9 w" X7 P
    2 t6 j( J; a9 M, T- _& r) V匹配包括回车换行符和空字符在内的任意字符有三种方法: ! u% o  ^9 j+ Q& W' B1 a# a/ s
    [\s\S]*
    % v; C& R: K4 e3 o$ K[\d\D]*/ p2 ~* N8 ^. [/ l
    [\w\W]*

    评分

    1

    查看全部评分

  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-22 16:32:20 | 显示全部楼层
    Mandolin 发表于 2021-2-22 07:19
    ' G% r( `; Z% G' T# K“.”不包括换行的,匹配换行:

    ; e+ S; s# _5 k0 [6 M' }# [& H% u( g非常感谢!那如果包含1 个以上换行符咋办呢?
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-22 16:55:12 | 显示全部楼层
    starmars 发表于 2021-2-22 16:29
    2 C6 I6 G, S9 J7 L0 x0 f4 E. D匹配包括回车换行符和空字符在内的任意字符有三种方法:
    , c: o3 O: N1 \+ [" P[\s\S]*
    ; X& x+ s/ T( J6 s. B  |% _$ ][\d\D]*

    & \( v% v) H. C3 B这个也试过了,在EmEditor中没有包含换行。
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 22:29:09 | 显示全部楼层
    wnsfzf 发表于 2021-2-22 16:55
    . F* [; h0 K2 o  U这个也试过了,在EmEditor中没有包含换行。
    2 e' L$ ^+ h1 T
    正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。; N9 M; u. o( I0 u8 V
    : B+ Z/ C1 i5 G* |- E( E0 J2 J
    就象每种编程语言的正则表达式的API类库对正则表达式的解读不100%相同一样,编辑器也有细微区别。比如,我刚刚发现NOTEPAD++在分组定义上是没有默认用\0分组表示字符串本身的,你必须加括号将原字符串括起来然后用\1分组来引用;而EmEditor则遵从标准的\0约定。
    ( |0 P! W! X! |2 H! Y6 R$ B' S: M$ M: Z! {2 m' q
    [\s\S],[\d\D],[\w\W] 可表示任何字符这是最标准的写法,但也许EmEditor就不认为它们可以表示回车换行,或者干脆它可能就是该编辑器的一个BUG也有可能。% V" q1 F# H3 B

    - b" M: ?5 [6 l1 O% G1 h5 s" ?0 _我比较熟悉C#,它的正则API库很多函数可以指定一个参数RegexOptions 枚举作为选项来细化正则处理的要求,见:
    7 f$ Q0 F, k( v6 ^' w) Whttps://docs.microsoft.com/zh-cn ... ptions?view=net-5.08 \1 r# G: E" `( A9 j3 v3 h. {

    / m' S' u; G, H. z; s4 z6 Q虽然大家不一定会C#,但是这个网页上的信息很有价值,不同语言正则库和编辑器在正则表达式实现上的区别,往往就体现在这些细节上。有时这些林林总总的具体实现并不象C#这样给你选择,而是固化了某种实现细节而不容程序员设置更改,你除了观察它的规律适应它别无选择。$ a" y5 X/ Y. Q
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2021-2-22 22:59:40 | 显示全部楼层
    本帖最后由 mikeee 于 2021-2-22 23:02 编辑
    * [* K/ K% |/ A9 V* M, \. j5 @! d* A( \% }6 }
    其实还有一个匹配换行符的方法0 K" `  }' x5 |3 A% k6 T+ c
    0 f3 g# m5 p8 [, E
    1. (?s).
    复制代码
    ( Q3 _& U( J" j, }: f5 I4 B" ?
    所谓的single line选项。和notepad++的选项 ". matches newline" 一个意思。  K7 ?* D" \3 P8 C+ O2 ?
    2 X& J" l  z, [! }4 m
    例如 * c% x! i1 }5 ^; _& n6 l+ n
    1. (?s).+
    复制代码
    2 c' `& b$ t4 m) t; C* [5 N% N
    匹配全部行- z6 U# Q+ v1 r- [) D2 Y* ^# V# U
    1 t+ `4 K0 _! s$ Y( Y% b; e! ?
    notepad++支持,不过emeditor不支持,emeditor的正则貌似不太规则,编辑大文件很不错,可能只有vim可以抗衡,vim用的正则貌似更不规则
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-23 09:03:40 | 显示全部楼层
    starmars 发表于 2021-2-22 22:29
    3 v1 P+ C. z, q- {- y! W正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。* h0 }5 m0 y0 U3 y

    / _9 C- V3 V: d) q, Z就象每种编程语言的 ...

    % X/ @) d+ q. l9 U看来这是一个很专业的问题,我只是平时办公偶尔用到,就不再深入了,感谢你的耐心解答,感谢!
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-23 09:08:11 | 显示全部楼层
    mikeee 发表于 2021-2-22 22:59( p* P% P+ \% i
    其实还有一个匹配换行符的方法
    3 p, I" X1 I/ S
    是的,emeditor打开大文件速度很快,但就是正则不太会用,感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-5-5 06:57 , Processed in 0.075669 second(s), 16 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表