正则表达式:匹配带引号的单个词或多个词

7

我需要一个正则表达式,可以匹配带引号的单词或多个单词。

[\w]* 可以匹配一个单词。

"[\w\W&&[^"]]*" 可以匹配带引号的多个单词。

顺便提一下,不确定为什么 \w\W 起作用,而 . (应该匹配所有字符)就不行。

那么如何将这两个正则表达式结合起来呢?

3个回答

9

"[^"]+" 这个正则表达式可以实现你想要的功能吗?(匹配双引号,匹配一个或多个非双引号字符,然后再匹配一个双引号。)


7

首先感谢您。

您的回答确实有所帮助,但我注意到我的问题可能不够清晰。

无论如何,通过您的回答,我最终得到了这个正则表达式:

"[^"]+"|[\w]+

它可以匹配引号中的单词和多个单词。

例如:what is "this thing" 将会有3个匹配项: 第一个匹配项:what 第二个匹配项:is 第三个匹配项:"this thing"

这正是我需要的。再次感谢。


+1 简单多了 ;) 起初我不明白你想要什么,但是我留下我的答案供参考。 - VonC

3

I would prefer:

"\s*((?:\w(?!\s+")+|\s(?!\s*"))+\w)\s*"

使用"\w+"而不是"[^"]+",因为^"匹配所有内容,而不仅仅是\w(字母数字)字符[a-zA-Z_0-9]

这样,您只会在引号内匹配\w字符,而没有尾随空格。

" ee eee e ee  "

为您提供组(1)中的内容:

ee eee e ee

负向先行断言(?!\s+")的作用是确保在双引号前不包括最后的空格;

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