正则表达式查找仅以单引号或双引号开头的所有单词

时间:2018-11-16 19:21:50

标签: javascript regex

我必须在文本中找到所有以'"单引号或双引号开头的所有单词(因此,如英语缩写),例如embar,< / p>

I love 'em
foo 'bar
foo 'bar?
foo 'bar.

但忽略双引号或单引号之类的单词

foo "bar"
foor 'bar'

现在,找到那些最后一个的正则表达式就像this一个

// find words in double or single quotes
/\"([^\"]+)\"|'([^']+)'|\\S+/

但是如何查找仅以'"开头的单词,而忽略诸如foo'foo?中的单词'foo.等最后一个点,等等。双引号还是单引号?

1 个答案:

答案 0 :(得分:4)

您可以将'"与字符集["']匹配。将该字符集捕获到一个组中,以便以后可以对其进行反向引用。重复单词字符,然后匹配单词边界,对第一个捕获组((?!\1))进行负向超前查找,确保单词结束后的下一个字符 not 不相同{{ 1}}或'开头匹配。

"

https://regex101.com/r/d5l2ol/2

请注意,这允许使用不一致的引号,例如

(['"])\w+\b(?!\1)

(如果您不希望这样做,只需在负前瞻中重复foo "bar' 字符集,而不要使用反向引用)