Regex 匹配单词字母组合的正则表达式模式
目前我正在为孩子们开发益智游戏,玩家需要从网格中选择正确的单词。我用正则表达式来匹配这个词 例如,我使用了Regex 匹配单词字母组合的正则表达式模式,regex,Regex,目前我正在为孩子们开发益智游戏,玩家需要从网格中选择正确的单词。我用正则表达式来匹配这个词 例如,我使用了([D|E|C|K]){4}来匹配牌组,因为玩家应该能够选择的单词顺序不准确。玩家可以选择它KDEC或EDCK或KCED或任何顺序 我通过使用([D|E|C|K]){4}实现了这一点 但在这里我面临的问题是,这个模式匹配EEEE或DDDD或DKDK等。只是集合中4个字符的任意组合 知道如何修改正则表达式以获得所需的结果吗 提前谢谢 基本上,这对于正则表达式来说不是一个好工作,因为这不是常规语
([D|E|C|K]){4}
来匹配牌组,因为玩家应该能够选择的单词顺序不准确。玩家可以选择它KDEC或EDCK或KCED或任何顺序
我通过使用([D|E|C|K]){4}
实现了这一点
但在这里我面临的问题是,这个模式匹配EEEE或DDDD或DKDK等。只是集合中4个字符的任意组合
知道如何修改正则表达式以获得所需的结果吗
提前谢谢
基本上,这对于正则表达式来说不是一个好工作,因为这不是常规语言。您最好按照一个简单的算法将输入字符串拆分为字符,对它们进行排序,然后重新连接为字符串,对搜索字符串执行相同的操作,然后比较结果 查看带有单词
的JavaScript演示:
const strings=['TALL'、'LATL'、'TLAL'、'TTAL'、'AATT'、'ATL'、'STL'];
常量搜索='高';
const compare_with=search.split(“”).sort().join(“”);
for(让我们来看看字符串){
console.log,“:”,s.split(“”.sort().join(“”==compare_with);
}
您可以对两个选择的字母进行排序,然后测试是否相等,或者如果速度很重要,则保留字母频率计数。虽然您可以为这样的事情动态构造正则表达式,但我不推荐这样做。最好通过编程计算字母数并进行验证。实际上,我希望有一个更好的正则表达式来匹配它。我知道应该有办法,但我无法确定这太棒了。谢谢你,先生。如果我试着和高个子相配呢。在那里你可以看到两个L。你能描述一下我如何匹配它吗。然后可能的模式是LATL、LLTA、ATLL、THALL和etc@RukshanDangalla请尝试^(?=(?:[^L]*L){2}[^L]*$)(?!*([^L]).\1[TAL]{4}$
(请参阅)@RukshanDangalla I更新了另外两个解决方案。基本上,这不是正则表达式的正确任务。