我正为一个问题而苦恼,但找不到合适的解决方案。问题:编写一个正则表达式,匹配文本中所有出现的不同字符或单词。文本顺序应完全如下:
请播放播放器
我试过了
(pl|播放|播放器)
但出于某种原因,它只会在所有单词中选择 pl。那么有人知道这是为什么吗?是否可以仅使用正则表达式来实现?
链接到regex101
任何帮助将不胜感激。
答案1
在寻找替代方案时,如果它们具有/以公共字符开头,则从最长的单词开始到最短的单词。由于pl
和play
都player
以 开头pl
,因此仅pl
匹配(作为第一个替代方案)。play
和player
不予考虑。
你的正则表达式应该是:(player|play|pl)
。
在这种情况下,首先测试/比较这些单词player
,然后play
如果player
未找到则测试/比较,最后pl
如果未找到另外两个单词则测试/比较。
答案2
您需要指定贪婪匹配,因此.*
在正则表达式的末尾添加,如下所示:
(pl|play|player).*
使用贪婪匹配时必须小心,因为最终可能会匹配超出您想要的结果。