回答

收藏

如何在 Go 中执行不区分大小写的正则表达式?

技术问答 技术问答 222 人阅读 | 0 人回复 | 2023-09-12

现在,当然,我可以写我的正则表达来处理这两种情况,比如regexp.Compile("[a-zA-Z]"),但我的正则表达式是基于用户提供的字符串:2 [6 @* l4 Q$ P8 X3 g
    reg,err := regexp.Compile(strings.Replace(s.Name," ","[ \\._-]",-1))) s, c! h& Z. m
s.Name名字在哪里?这可能类似于西北偏北。现在,对我来说,最明显的解决方案是遍历每个字符s.Name并为每一个字母写上[nN]”:
' h$ C2 |; W  q6 B( e7 F

    5 {; K. ^. S& a$ G, ?2 _+ q* t+ Z
  • for i := 0; i 但我觉得这是一个相当不优雅的解决方案。速度并不是真正的问题,但我需要知道是否有其他方法。
    0 z1 \3 G. y' D' t( b; l
  •                                                                5 u3 ^/ I) x( ~; h- _. E
  •     解决方案:                                                               4 o$ a6 B0 X) s% g) g5 H
  •                                                                 您可以将不区分大小写的标志设置为正则表达式的第一项。
    " I1 o- R+ V& C) W( x5 H5 m
  • 可以添加"(?i)"在正则表达式的开头做到这一点。[code]reg,err := regexp.Compile("(?i)" strings.Replace(s.Name," ","[ \\._-]",-1))
    3 ^+ @5 k* @, M* l. M2 W" ?
它看起来像固定的正则表达式。
4 |  f, G" Y) g
    r := regexp.MustCompile(`(?i)CaSe`)) L4 H; e" l3 ^7 [8 e1 a) [2 j
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则