短语中类似单词的正则表达式交替

regex alternation with similar words in a phrase

本文关键字:正则表达式 单词 短语      更新时间:2023-09-26

我正在学习JavaScript并尝试为类似的短语开发正则表达式模式。这是我目前拥有的:

var regEx = /(?:[^"']|^)(show me a picture|show me a photo|show me a photograph)(?!["'])/i;

我一直在试图理解交替,但这个正则表达式的结果是它只会匹配 show me a picture & show me a photo 而不是show me a photograph。我的理解是正则表达式已经找到了show me a photo所以它止步于此。

我无法找到也可以解释show me a photograph短语的正则表达式。

也许这不是最有效的方法,这就是我遇到问题的原因。

更改您的正则表达式以捕获整个短语(单词),如下所示:

var regEx = /(?:[^"']|^)('bshow me a picture'b|'bshow me a photo'b|'bshow me a photograph'b)(?!["'])/ig;

JavaScript 正则表达式规范是这样说的:

|正则表达式运算符将两个替代项分开。该模式首先尝试匹配左侧 Alternative(然后是正则表达式的续集);如果失败,它将尝试匹配正确的析取(后跟正则表达式的续集)。

因此,如果您要求匹配show me a photo|show me a photograph,则始终首选左侧替代方案。如果您希望photograph优先,请按其他顺序放置它们。