Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配单词字母组合的正则表达式模式_Regex - Fatal编程技术网

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}
来匹配牌组,因为玩家应该能够选择的单词顺序不准确。玩家可以选择它KDECEDCKKCED或任何顺序

我通过使用
([D|E|C|K]){4}
实现了这一点

但在这里我面临的问题是,这个模式匹配EEEEDDDDDKDK等。只是集合中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更新了另外两个解决方案。基本上,这不是正则表达式的正确任务。