ian19znj
V2EX  ›  问与答

请教一个正则表达式的问题,如何匹配要么一对双引号,要么没有双引号,但不匹配只有一个引号的情况?

  •  
  •   ian19znj · Apr 15, 2021 · 1677 views
    This topic created in 1857 days ago, the information mentioned may be changed or developed.

    这个问题可能对大佬来说很简单,但我想了很久没想明白,在此请教一下。

    问题简化成这样的模型:我有一些人名,这些人名可以用一对双引号包住,或者没有双引号,但不能只有一边有引号。

    https://regex101.com/r/v30Gob/1

    如链接所示,我想匹配 lilei 和 hanmeimei,而不匹配 lintao,因为 lintao 只有单边引号。 请问怎么做呢?

    先谢过哈。

    7 replies    2021-04-16 21:00:15 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       Apr 15, 2021 via Android
    ("\w+"|\w+)
    0ZXYDDu796nVCFxq
        2
    0ZXYDDu796nVCFxq  
       Apr 15, 2021 via Android
    更正一下:
    ^("\w+"|\w+)$
    raaaaaar
        3
    raaaaaar  
       Apr 15, 2021 via Android
    写两个再或不行吗,就像楼上那样
    xml123
        4
    xml123  
       Apr 16, 2021
    ^("?)\w+\1$
    还是用楼上的方案吧
    ian19znj
        5
    ian19znj  
    OP
       Apr 16, 2021
    @gstqc #2
    谢谢,我想过用或,

    ^("(?<name>\w+)"|(?<name>\w+))$

    但是他会提示我 group name 不唯一。

    https://regex101.com/r/2HvO2X/1
    0ZXYDDu796nVCFxq
        6
    0ZXYDDu796nVCFxq  
       Apr 16, 2021   ❤️ 1
    @ian19znj 不能用两次 (?<name>)

    如果想赋值,可以把#4 的改一下
    ^("?)(?<name>\w+)\1$
    ("?) 表示匹配双引号,后面的\1 再匹配一次
    ian19znj
        7
    ian19znj  
    OP
       Apr 16, 2021
    @gstqc \1 再匹配一次真是完美解决了我的问题,太谢谢啦!!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2986 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 399ms · UTC 07:54 · PVG 15:54 · LAX 00:54 · JFK 03:54
    ♥ Do have faith in what you're doing.