掌上百科 - PDAWIKI

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 931|回复: 13

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

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

    [LV.4]偶尔看看III

    发表于 2021-2-18 21:47:01 | 显示全部楼层 |阅读模式
    最近OCR了一个词组词典,获得一个全书索引,每行如下:
    / k) p% B+ p4 E( L
    1 @" X* t5 ^8 t1 V) C' Gadd up加起来;说得通4 O; N8 d0 D( C' A8 }/ V
    9 c4 _- K" d& P8 p! b
    左边是词组,右边是中文释义,现在想将中文释义换行从头输出,所以需要匹配第一个汉字前面加\r\n换行符号。
    / Y+ ~# r% s2 x* O, x" U" F) d8 w) [% D/ c9 ^9 p  A( o' j$ U; [
    网上查了匹配中文字符的正则表达式: [u4e00-u9fa5]
    8 k+ D% h# V/ |  f; v% n但在NOTEPAD ++ 和 EMEDITOR里试了都么有用,它们都是中文字符英文字母一块匹配上了。8 V& q# I) e0 \1 S) ^
    $ Y4 w0 p; s* n( y, M
    有高手指点一下?谢谢!
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-18 22:36:52 | 显示全部楼层
    本帖最后由 Mandolin 于 2021-2-18 22:39 编辑 . Z  ]1 [1 b" A/ v

    : q" z7 R- e; s' Y3 a8 g7 i& X, {* |EmEditor 里查找:
    - a; g' M# W" x; @  d  G
    1. ([a-z])( *)([\x{4e00}-\x{9fa5}])
    复制代码

    ! f% L8 I" ^* f9 g" h  W' r8 L替换为:
    6 g+ o# F) x: ?; ^" r$ Y( B, q
    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 编辑
    " V+ k& k: `9 f  B  Y$ x5 g0 ?: |* y8 y0 R% X) q
    notepad++里# U/ }2 |) f: e0 v9 C! Y  ~9 m
    7 e2 v/ m% F' B+ d; B% A
    1. ([^一-龥]+)([一-龥].*)
    复制代码
    $ I3 a8 L/ F1 B5 l0 A. [0 j& p' K
    替代0 H# ?3 p' I4 l) F# }3 F# [
    1. \1\n\2
    复制代码

    9 r& v' k7 W. w4 R
    1 ^3 \$ V" y! I! n& I4 U) s[一-龙](对应[\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
    0 y) q* I" C/ O/ _EmEditor 里查找:3 D2 O: a( m( O: n
    2 m" x: I( i$ @5 }9 @( r5 o7 C
    替换为:

    6 T: M( b4 e( ?- B& j1 U! m有用!感谢大师!
  • 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
    9 _/ N' h! R9 `2 h+ K& N. V* GEmEditor 里查找:
    * l/ |; O+ C% d
    / I, M& P: ]# k' p  d替换为:
    # I; }# Q7 z7 p+ y4 X
    借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?
    0 p1 R4 C* m9 w用“.*?”,然后勾选了“高级”选项卡的“正则表达式“.”可匹配换行符”也没用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-2-22 07:19:18 | 显示全部楼层
    “.”不包括换行的,匹配换行:& x8 Z& y3 [) ~' i) V& m8 s/ x
    1. .+\n.+
    复制代码
    0 m* E9 A5 E3 X6 z" l
    * L4 y  P0 E7 k: J8 ]8 E* J& Q

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 16:29:00 | 显示全部楼层
    本帖最后由 starmars 于 2021-2-22 16:30 编辑
    ( Y) w# m# a: H* `  l& g9 \
    wnsfzf 发表于 2021-2-21 19:50
    6 l4 T8 V# x0 _3 v! m9 |6 r( a9 Q$ x借楼请教一个问题:EmEditor里如何匹配包含换行符的任意字符?: v; Z$ _4 I% C5 V! m$ t. v
    用“.*?”,然后勾选了“高级”选项卡的 ...

    / p, Q. p9 X! D% v" V# \& e1 j- n4 G
    匹配包括回车换行符和空字符在内的任意字符有三种方法: 8 D& h) L7 P1 f5 Q: L3 H
    [\s\S]*; m" l; u) r( Y: `* e3 @
    [\d\D]*
    : Y" [7 ]& O8 S6 D/ I1 g0 M: {1 F; ][\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- R  Z& X9 |9 B; V# z+ V; z/ o3 s
    “.”不包括换行的,匹配换行:

    / b8 P8 `: u$ k1 `( b非常感谢!那如果包含1 个以上换行符咋办呢?
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-22 16:55:12 | 显示全部楼层
    starmars 发表于 2021-2-22 16:292 Q3 W9 ^) _9 A9 i1 R
    匹配包括回车换行符和空字符在内的任意字符有三种方法:
    : Z# H& C7 J! t" E[\s\S]*, [3 v0 ~. j5 \" d
    [\d\D]*

    ! f: O% H3 K8 w" B8 k% j这个也试过了,在EmEditor中没有包含换行。
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2021-2-22 22:29:09 | 显示全部楼层
    wnsfzf 发表于 2021-2-22 16:558 O/ O  c2 O2 e# N0 C2 |
    这个也试过了,在EmEditor中没有包含换行。
    ) P% C: ?! s/ t7 \. X. R& E
    正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。
    ; b( ]4 [: z$ U$ j/ J% K3 q4 Z( U7 B
    就象每种编程语言的正则表达式的API类库对正则表达式的解读不100%相同一样,编辑器也有细微区别。比如,我刚刚发现NOTEPAD++在分组定义上是没有默认用\0分组表示字符串本身的,你必须加括号将原字符串括起来然后用\1分组来引用;而EmEditor则遵从标准的\0约定。# r8 v( N3 G: _1 u7 o- E
    0 t6 X" L/ Z4 T. h; Q$ K! g
    [\s\S],[\d\D],[\w\W] 可表示任何字符这是最标准的写法,但也许EmEditor就不认为它们可以表示回车换行,或者干脆它可能就是该编辑器的一个BUG也有可能。4 X) ~- @* j0 Q
    2 g+ V) c, H+ r) N2 g
    我比较熟悉C#,它的正则API库很多函数可以指定一个参数RegexOptions 枚举作为选项来细化正则处理的要求,见:3 f; b6 S9 B* v2 o/ m4 j( U
    https://docs.microsoft.com/zh-cn ... ptions?view=net-5.0
    # L/ `6 L' @# t8 V3 P
    : R! \! }) A1 Z5 g) k虽然大家不一定会C#,但是这个网页上的信息很有价值,不同语言正则库和编辑器在正则表达式实现上的区别,往往就体现在这些细节上。有时这些林林总总的具体实现并不象C#这样给你选择,而是固化了某种实现细节而不容程序员设置更改,你除了观察它的规律适应它别无选择。
    6 {& C3 j) J3 C0 b+ N
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2021-2-22 22:59:40 | 显示全部楼层
    本帖最后由 mikeee 于 2021-2-22 23:02 编辑
    , G' g9 H  r% x7 G& Z1 A8 ]
    % `! A" W  B/ J其实还有一个匹配换行符的方法4 p  S. {8 G! n- I# `# i

    : w" n& y/ J  @* }$ {2 C
    1. (?s).
    复制代码

    ( N5 K3 X" }! h5 k% W2 K( Q所谓的single line选项。和notepad++的选项 ". matches newline" 一个意思。' b. L$ b4 v$ Y
    9 h, s5 W% a7 V3 O# I
    例如
    " W" D) t3 K  k1 T; {8 r
    1. (?s).+
    复制代码

    # F7 R( q: \# n$ k匹配全部行
    % g2 q8 X0 p% e* d! E' w1 i7 v  k) o2 z2 N  A9 p  z* H
    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
    8 M5 L- i- q/ l2 F( E  i) F7 L正则表达式只是一种规范,真正实现它可以有各种版本, 而这些版本可能有细微的差别。/ b% h& U/ A6 O$ E: o
    8 M# z: }& W2 `  y! @) h) o. n2 b8 c
    就象每种编程语言的 ...

    ' i1 {) D% c0 w9 K5 w0 b* s$ R看来这是一个很专业的问题,我只是平时办公偶尔用到,就不再深入了,感谢你的耐心解答,感谢!
  • TA的每日心情
    开心
    2019-11-30 08:00
  • 签到天数: 56 天

    [LV.5]常住居民I

    发表于 2021-2-23 09:08:11 | 显示全部楼层
    mikeee 发表于 2021-2-22 22:592 B% ]6 h9 ~! l9 M- |# z! C( L
    其实还有一个匹配换行符的方法
    7 S7 u. U4 [9 `
    是的,emeditor打开大文件速度很快,但就是正则不太会用,感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-22 19:42 , Processed in 0.022776 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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