nuik Asked: 2023-07-12 00:10:37 +0800 CST2023-07-12 00:10:37 +0800 CST 2023-07-12 00:10:37 +0800 CST 需要有关正则表达式的建议 772 我正在为一个问题而绞尽脑汁,但我无法找到合适的解决方案。问题:编写一个正则表达式来匹配文本中所有出现的不同字符或单词。文本顺序应该是这样的: pl 播放器 我试过了 (pl|播放|玩家) 但由于某种原因它只会选择所有单词中的 pl 。那么有人知道为什么会这样吗?是否可以仅使用正则表达式来做到这一点? 链接到regex101 任何帮助将不胜感激。 regex 2 个回答 Voted Best Answer Reddy Lutonadio 2023-07-12T00:17:05+08:002023-07-12T00:17:05+08:00 当您寻找替代品时,如果它们具有/以常见字符开头,请从最长的单词开始到最短的单词。由于pl、play和player全部以 开头pl,只有pl(作为第一个替代项)匹配。play并且player不被考虑。 你的正则表达式应该是(player|play|pl): player在这种情况下,首先对这些单词进行测试/比较,然后与play“如果player未找到”进行测试/比较,最后与“pl如果未找到其他两个单词”进行测试/比较。 RobH 2023-07-12T00:20:59+08:002023-07-12T00:20:59+08:00 您需要指定贪婪匹配,因此.*在正则表达式的末尾添加,如下所示: (pl|play|player).* 使用贪婪匹配时必须小心,因为最终匹配的数量可能会超出您的预期。
当您寻找替代品时,如果它们具有/以常见字符开头,请从最长的单词开始到最短的单词。由于
pl
、play
和player
全部以 开头pl
,只有pl
(作为第一个替代项)匹配。play
并且player
不被考虑。你的正则表达式应该是
(player|play|pl)
:player
在这种情况下,首先对这些单词进行测试/比较,然后与play
“如果player
未找到”进行测试/比较,最后与“pl
如果未找到其他两个单词”进行测试/比较。您需要指定贪婪匹配,因此
.*
在正则表达式的末尾添加,如下所示:(pl|play|player).*
使用贪婪匹配时必须小心,因为最终匹配的数量可能会超出您的预期。