从用户输入的字符串 (C#) 反向正则表达式
本文关键字:正则表达式 用户 输入 字符串 | 更新日期: 2023-09-27 18:30:27
是否可以从用户输入的字符串生成正则表达式?是否有任何 C# 库可以执行此操作?
例如,用户输入一个字符串(例如 ABCxyz123),C# 代码自动生成 [A-Z]{3}[a-z]{3}''d{3}。这是一个简单的字符串,但我们可以有更复杂的字符串,例如
周一-0123/AB/5678-ABC 2/7
或
1234-678/ABC::1234ABC?246
我已经有一个字符串标记器(来自之前的堆栈溢出问题),所以我可以从令牌列表中构造一个正则表达式。
但我想知道是否有一个库或 C# 代码可以做到这一点。
编辑:重要,我还应该说:重要的不是字符串中的实际字符,而是字符的类型和数量。
例如,用户可以输入 ABCxyz123 的"模式"字符串。
这将被解释为
3 个大写字母,后跟
3 个小写字母,后跟
3 位数字
因此,其他用户(如果符合)必须输入与该模式 [A-Z]{3}[a-z]{3}''d{3}.匹配的字符串,例如 QAZplm789
需要检查的是用户输入的字符串的格式,而不是实际内容,如果这有意义的话
Jerry 有一个相关的链接为字符串列表创建正则表达式
还有其他一些链接。
我不想做任何复杂的事情,例如 NLP 等。
我可以在推送时使用 C# 表达式生成器和动态 linq,但这似乎矫枉过正,是代码可维护的噩梦。
我将从标记化字符串编写自己的"简单"正则表达式生成器。
示例用例:
我工作的管理员办公室用户可以通过键入字符串模式来设置每个字段的字符串模式,我的代码将其转换为正则表达式,我将它们存储在数据库中。
例如:字段 1 在开头需要 3 位数字。如果有 2 位数字,则发送到工作流 1,如果 3 位,则发送到工作流 2。我可以简单地通过 substr 或其他方式检查字符的数量。但这将是一个具体的解决方案。我正在尝试为具有多个字段的多个文档执行此操作。此外,每个字段可以有多个格式检查器。
我不想为大量文档中的每个字段编写特定的 C# 检查。
我会继续下去的,应该让我开心几天。