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

2021-04-15 19:23:13 +08:00
 ian19znj

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

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

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

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

先谢过哈。

906 次点击
所在节点    问与答
7 条回复
gstqc
2021-04-15 19:46:31 +08:00
("\w+"|\w+)
gstqc
2021-04-15 19:49:05 +08:00
更正一下:
^("\w+"|\w+)$
raaaaaar
2021-04-15 22:37:08 +08:00
写两个再或不行吗,就像楼上那样
xml123
2021-04-16 09:26:01 +08:00
^("?)\w+\1$
还是用楼上的方案吧
ian19znj
2021-04-16 09:52:45 +08:00
@gstqc #2
谢谢,我想过用或,

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

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

https://regex101.com/r/2HvO2X/1
gstqc
2021-04-16 10:04:52 +08:00
@ian19znj 不能用两次 (?<name>)

如果想赋值,可以把#4 的改一下
^("?)(?<name>\w+)\1$
("?) 表示匹配双引号,后面的\1 再匹配一次
ian19znj
2021-04-16 21:00:15 +08:00
@gstqc \1 再匹配一次真是完美解决了我的问题,太谢谢啦!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/770928

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX