Regex 逆正则表达式处理以生成正则表达式短语

Regex 逆正则表达式处理以生成正则表达式短语,regex,Regex,我们使用普通的正则表达式处理器,传递输入文本和正则表达式短语以捕获所需的输出文本 我们是否可以反转接收输入文本和输出文本的处理以生成适当的正则表达式短语,特别是当文本大小限制在实际最小值(例如几十个字符)时?在这方面是否有可用的工具 phrase = the_inverse_tool( input = "12$abc@#EF345", output=["12", "abc", "EF", "345"]) = "\d+|[a-zA-Z]+"

我们使用普通的正则表达式处理器,传递输入文本和正则表达式短语以捕获所需的输出文本

我们是否可以反转接收输入文本和输出文本的处理以生成适当的正则表达式短语,特别是当文本大小限制在实际最小值(例如几十个字符)时?在这方面是否有可用的工具

phrase = the_inverse_tool(
         input = "12$abc@#EF345", 
         output=["12", "abc", "EF", "345"]) 
       = "\d+|[a-zA-Z]+"

您要问的似乎是,是否有某种算法或现有库接受输入字符串(如
“12$abc@#EF345”
)和一组匹配项(如
[“12”、“abc”、“EF”、“345”]
),并在给定输入字符串的情况下生成生成匹配项的“适当”正则表达式

然而,在这种情况下,“充分”意味着什么?例如,一个简单的答案是:
“12 | abc | EF | 345”
。然而,您似乎期望更像一般化的
“\d+|[a-zA-Z]+”

请注意,您的概括做出了许多假设,例如,法语、瑞典语或汉语中的单词不应匹配。包含
的数字也不包括在内

你不能期望一个通用的算法能做出这样的区分,因为这些问题本质上需要通用的人工智能,在抽象的层次上理解问题域,并提出合适的解决方案

另一种看待它的方式是:你的问题与询问是否有某种函数或库可以自动化程序员的工作(特定于regex语言)是一样的。答案是:不,反正还没有,到那时,不会有人在StackOverflow上问或回答这些问题,因为我们都会失业


然而,这里可以找到一些更乐观的观点:

你能举个例子吗?当然!例如,如果输入文本是
“cat”
,输出文本是
“dog”
,我们可以用
“dog”
替换
\bcat\b
\c.*
\.*a.
和其他正则表达式的匹配。哪个是正确的?问题是这个。当正则表达式用于匹配字符串或字符串的一部分时,需要两件事:字符串本身和正则表达式要实现的规则(例如,匹配第二个逗号后的第一个单词)。您要求在不使用规则的情况下从两个字符串生成正则表达式。那太傻了。问题中的例子可以说明我的观点。建议所需的正则表达式为“
\d+|[a-zA-Z]+”
。另一个是
“12 | abc | EF | 345”
,但这两个字符串都不能用于匹配其他字符串。
phrase = the_inverse_tool(
         input = "12$abc@#EF345", 
         output=["12", "abc", "EF", "345"]) 
       = "\d+|[a-zA-Z]+"