代码之家  ›  专栏  ›  技术社区  ›  Florent06

匹配由管道分隔的重复组

  •  0
  • Florent06  · 技术社区  · 4 年前

    这是我的短信:

    "cn=AAAA,ou=Profils,o=SF|cn=BBBB,ou=Profils,o=SF"
    "cn=CCCC,ou=Profils,o=SF"
    

    这是我的正则表达式:

    "cn=([A-Z]{4}),.*(\|cn=([A-Z0-9]{4}),.*)"
    

    我想提取 cn= ,所以,这里 AAAA , BBBB CCCC . 第二行不匹配。

    这是我的 Regex101

    1 回复  |  直到 4 年前
        1
  •  0
  •   Kim Tang    4 年前

    如果您只想提取AAAA、BBBB或CCCC,那么在这种情况下仅仅“([A-Z]{4})”就够了吗?

        2
  •  0
  •   Michał Turczyn    4 年前

    你可以试试 \bcn=([A-Z]{4})\b

    说明:

    \b -词边界

    cn= 中国= 字面意思

    (...) -第一捕获组

    [A-Z]{4} -将大写字母匹配四次

    Demo

    要提取的文本位于第一个标题组中

        3
  •  0
  •   Booboo    4 年前

    \bcn=([^,]*)
    
    1. \b 匹配单词边界。
    2. `cn='匹配'cn=。
    3. ([,]*) 捕获组中的捕获#1零个或多个非逗号字符(直到到达逗号)。

    See Regex Demo