掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 642|回复: 13

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

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

    [LV.4]偶尔看看III

    发表于 2021-2-18 21:47:01 | 显示全部楼层 |阅读模式
    最近OCR了一个词组词典,获得一个全书索引,每行如下:" P4 p( F+ u# o; e5 @9 t7 x, z3 u
    " v( H  M, l# g4 r3 i2 d
    add up加起来;说得通: W% O  M$ L$ E  K* P, ?

    ) ?. `/ T6 l5 y  P左边是词组,右边是中文释义,现在想将中文释义换行从头输出,所以需要匹配第一个汉字前面加\r\n换行符号。
    2 c. S) A# n. M8 N. ~. n. V5 @: t
    & T/ _0 B0 r+ G* E9 y$ q网上查了匹配中文字符的正则表达式: [u4e00-u9fa5]
    6 v1 ?9 c! \7 P, O  e. g但在NOTEPAD ++ 和 EMEDITOR里试了都么有用,它们都是中文字符英文字母一块匹配上了。
    0 J$ M! j' E( s) X/ H; n0 v! G1 E$ U) H0 P; q! h
    有高手指点一下?谢谢!
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-18 22:36:52 | 显示全部楼层
    本帖最后由 Mandolin 于 2021-2-18 22:39 编辑
    % g3 C$ J6 J" K7 y' o! k% _
    , G/ m) N, H, FEmEditor 里查找:
    + p7 h5 ]. i3 [' ?- ]
    1. ([a-z])( *)([\x{4e00}-\x{9fa5}])
    复制代码

    5 ?. s9 ], p* s/ c替换为:
    ' I; h% D; b7 n. A) B0 s  u% D2 g
    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 编辑
    ) W$ T) |3 M  m+ ~4 Q4 k
    * v) ?, _" ]) Z$ Cnotepad++里
    $ u7 [5 n# }/ [- K6 h; c0 ?9 _6 w7 F3 W' v
    1. ([^一-龥]+)([一-龥].*)
    复制代码
    & k& _3 \# G2 u  H' L+ v
    替代! c+ N* C" B  X: H
    1. \1\n\2
    复制代码
    + e1 Y+ O) N5 D2 B& Z7 H4 o, N

    $ }3 y' i" _% }, {, m3 x[一-龙](对应[\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
    / L0 D* M, J/ Q' u8 [EmEditor 里查找:
    ) r2 Q) `+ E0 Y2 V
    ' }0 V- z% x( \6 L, R3 U/ [) C8 {替换为:
    ( t' T  |" w: s( K
    有用!感谢大师!
  • 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
    ' q, N* b0 \* ^: s* K* V( e7 aEmEditor 里查找:% ?' ]& K3 F$ D$ W% X0 o

    , k  S8 k9 ]# C0 r* x替换为:

    , T, o# I8 V/ o3 C借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?1 B2 U, \' n: o% ?7 S
    用“.*?”,然后勾选了“高级”选项卡的“正则表达式“.”可匹配换行符”也没用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-22 07:19:18 | 显示全部楼层
    “.”不包括换行的,匹配换行:
    * A9 @( Y3 I8 `2 l6 h- J
    1. .+\n.+
    复制代码

    - r3 P# V7 Y5 T* K* M
    1 I. y2 d7 I5 _" B! i' v+ ?

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 16:29:00 | 显示全部楼层
    本帖最后由 starmars 于 2021-2-22 16:30 编辑
    ! ?# _$ d) z. i* ^* E
    wnsfzf 发表于 2021-2-21 19:506 ~; {+ t: x( u& i
    借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?
    ' o, B# g6 I* Z用“.*?”,然后勾选了“高级”选项卡的 ...
    1 ~! L3 r/ s; l/ v. A. A4 y
    8 @( ?" K; G1 L  {/ u; A
    匹配包括回车换行符和空字符在内的任意字符有三种方法:
    8 O( `; W# }0 M/ m[\s\S]*
    + d  L* @* t7 D[\d\D]*
    , |$ D$ p0 U$ z  u$ R[\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) P! N+ N! X. a
    “.”不包括换行的,匹配换行:
    ( Q5 e: ?+ g0 j* d4 Q3 M) u
    非常感谢!那如果包含1 个以上换行符咋办呢?
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-22 16:55:12 | 显示全部楼层
    starmars 发表于 2021-2-22 16:29$ N3 D4 w4 z/ s( i; l8 [" e
    匹配包括回车换行符和空字符在内的任意字符有三种方法: 9 ?, u  N; f. W% P
    [\s\S]*! Y5 F4 [6 ]: C0 k9 w6 j& f& W; {3 Z
    [\d\D]*

    # B" [; L$ P' g* ~) {/ U1 Z4 L0 J这个也试过了,在EmEditor中没有包含换行。
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 22:29:09 | 显示全部楼层
    wnsfzf 发表于 2021-2-22 16:556 U# V6 [4 U3 T! k) q" J0 S
    这个也试过了,在EmEditor中没有包含换行。

    ! W; x  s9 c2 x" E5 y$ l9 N" S) w3 ~正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。
    8 x! a$ I- d& w; ?. h
    9 o& k. m' i; o: O0 I就象每种编程语言的正则表达式的API类库对正则表达式的解读不100%相同一样,编辑器也有细微区别。比如,我刚刚发现NOTEPAD++在分组定义上是没有默认用\0分组表示字符串本身的,你必须加括号将原字符串括起来然后用\1分组来引用;而EmEditor则遵从标准的\0约定。
    , S" i0 V, q1 b9 o9 v2 E# R" P8 _
    % A( q2 v7 x1 r, s- S/ K[\s\S],[\d\D],[\w\W] 可表示任何字符这是最标准的写法,但也许EmEditor就不认为它们可以表示回车换行,或者干脆它可能就是该编辑器的一个BUG也有可能。
    : ]' Z1 K3 m; j  g+ B
    + b2 e+ r5 f+ r0 n# F我比较熟悉C#,它的正则API库很多函数可以指定一个参数RegexOptions 枚举作为选项来细化正则处理的要求,见:
    & [* n2 W& q/ M: S9 X- @https://docs.microsoft.com/zh-cn ... ptions?view=net-5.0  c# f, g5 N4 x* e) [1 `' h+ f2 o
    * \1 ^( |* n8 ]* i- }
    虽然大家不一定会C#,但是这个网页上的信息很有价值,不同语言正则库和编辑器在正则表达式实现上的区别,往往就体现在这些细节上。有时这些林林总总的具体实现并不象C#这样给你选择,而是固化了某种实现细节而不容程序员设置更改,你除了观察它的规律适应它别无选择。
    ! p4 T( \; w& M, k/ n- ^# r
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2021-2-22 22:59:40 | 显示全部楼层
    本帖最后由 mikeee 于 2021-2-22 23:02 编辑 : u4 ~, p+ Q/ D) q
    1 d" E5 o7 J  z5 Q* S. u) t
    其实还有一个匹配换行符的方法! m: \) ^! J3 m  n' C) L( @3 s
    ( l0 O' R' ?: h3 E  K
    1. (?s).
    复制代码
    1 I4 n4 U2 Q. N8 ?
    所谓的single line选项。和notepad++的选项 ". matches newline" 一个意思。
    1 O" M3 W; x7 @  F% L6 ~7 h
    * Y% n' r( x( b" N! Z例如
    " u! a% v' Q" s% j& C( U+ ^( ~
    1. (?s).+
    复制代码

      a  }( c( i7 ]4 [# b. i4 k匹配全部行
    $ j5 V0 l$ i, \! D" R, O% O; g; o4 ?8 {# m7 N) h8 R5 s
    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
    7 ~! k: @. Z3 g/ C' s正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。
    9 n1 P' `- ]7 k  \1 a
    6 G8 S& k6 h$ H6 Z就象每种编程语言的 ...

    7 e0 B/ |+ G5 Z* j9 `看来这是一个很专业的问题,我只是平时办公偶尔用到,就不再深入了,感谢你的耐心解答,感谢!
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-23 09:08:11 | 显示全部楼层
    mikeee 发表于 2021-2-22 22:59
      R8 w- ?- }8 S* Q其实还有一个匹配换行符的方法

    & m# {0 P8 |1 i3 M是的,emeditor打开大文件速度很快,但就是正则不太会用,感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-19 12:21 , Processed in 0.074861 second(s), 16 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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