为什么在正则表达式中没有排列?(即使普通语言似乎能够做到这一点)
问题 没有简单的方法来获取正则表达式的排列。 排列:将单词 (“ aabc”)转换为另一个顺序,而无需更改数字或字母种类。w = x1个… xñw=X1个…Xñw=x_1…x_n 正则表达式:正则表达式。 进行验证: “不重复的正则表达式排列”假设这样做会更简单,那么答案将创建JavaScript代码而不是正则表达式。 “如何查找给定文本中给定单词的所有排列” –答案也不使用正则表达式。 “正则表达式匹配所有{1,2,3,4}而不重复” –答案使用了正则表达式,但它既不适应也不简单。 这个答案甚至声称:“正则表达式不能满足您的要求。它不能从字符串生成排列”。 我正在寻找的解决方案 它应具有以下形式: »aabc«(或其他任何可以使用左括号和右括号的内容) (aabc)!(类似于(abc)?,但最后还有另一个符号) [aabc]!(类似于[abc] +,但最后还有另一个符号) 这些解决方案的优势 他们是: 简单 适应性强 可重用 为什么这应该存在 正则表达式是描述常规语言语法的一种方式。他们完全有能力成为任何一种常规语言。 假设常规语言功能强大,可以进行排列(下面有证明)–为什么没有简单的方法来表达这一点? 所以我的问题是: (为什么)我的证明错了吗? 如果正确:为什么没有简单的方法来表达排列? 证据 正则表达式是记录正则语言语法的一种方法。他们可以描述任何常规语言的语法。 描述任何常规语言(字母表中字母数量有限)的另一种语法是非确定性自动机(状态数量有限)。 具有有限数量的字母,我可以创建此自动机:(示例。正式形式:请参见下文) 接受“ abbc”排列的语法: (很抱歉上面的数字,也许有人知道如何使这部分看起来更好) s->ah¹ s->bh² s->ch³ h¹->bh¹¹ h¹->ch¹² h²->ah¹¹(没有错字!等价) h²->bh²² h²->ch²³ h³->ah¹² h³->bh²³ …