我必须在文本中找到所有以 '
或 "
单引号或双引号(因此类似于英语缩写)开头的单词,例如 em
或 bar
in
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)
) 进行负前瞻,确保单词结束后的下一个字符不是 与开头匹配的相同 '
或 "
。
(['"])\w+\b(?!\1)
https://regex101.com/r/d5l2ol/2
请注意,这允许不一致的引号,例如
foo "bar'
(如果您不想这样,只需在负向先行中再次重复 ['"]
字符集,而不是反向引用)
关于javascript - 仅查找以单引号或双引号开头的所有单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53344135/