一个正则表达式,可以匹配带有引号和单词“draft”的内容?只匹配带有单词Draft的引号。

3

一个正则表达式可以捕获引号内的任何内容以及引号内的单词draft。它将查找单词Draft,找到后在引号内前后抓取所有内容。例如:

1)“地球很美丽”

2)“我的第二份草稿”

在上面的示例中,正则表达式仅会抓取第二个示例,并突出显示引号内的所有内容。如何实现这一点?

谢谢。


你使用的是哪种编程语言? - Donut
语言是JavaScript。 - KingMak
2个回答

4

您应该能够使用这个:

\"[^\"]*(d|D)(r|R)(a|A)(f|F)(t|T)[^\"]*\"

解释:

  • \" - 匹配字符"
  • [^\"]* - 匹配任何字符序列,只要序列中没有"字符
  • (d|D)(r|R)(a|A)(f|F)(t|T) - 匹配单词 "draft",不区分大小写
  • [^\"]* - 匹配任何字符序列,只要序列中没有"字符
  • \" - 匹配字符"

根据您使用的语言,您应该能够摆脱(d|D)(r|R)(a|A)(f|F)(t|T)序列,并将其替换为draft,只要指示正则表达式应被视为不区分大小写即可。

由于您正在使用Javascript,您的正则表达式字面量如下所示:

/\"[^\"]*draft[^\"]*\"/i

有点奇怪,有点不行:它抓取了整个东西:“1 - Draft”,“2 - Draft”,“fake”,“Fake Draft 2”,它不应该抓取“fake”,你认为可以改进吗?不过还是谢谢。 - KingMak
@Ahmed - 我稍微修改了我的答案,看看这样是否更好。 - Donut
哇,甜甜圈,你做到了,太感谢了!我为此疯狂了很长时间,谢谢!!! - KingMak
@Donut 使用选项 i,您可以告诉正则表达式不区分大小写。这将使其更易于阅读、理解、维护和修改。 - Jean
@Jean 谢谢,我一直没有具体提到这点,因为原帖并没有说明他使用的是哪种语言。他后来提到他正在使用Javascript,我已经相应地更新了我的答案。 - Donut
非常感谢,伙计们,运行得很好。我的错,我没有说明我使用的是什么编程语言。 - KingMak

2
这个模式应该适用于你。
/\"((draft.*)|(.*draft.*)|(.*draft))\"/Ui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接