用户输入的字符串(C#)反向RegExp

时间:2014-11-14 10:29:12

标签: c# regex

是否可以从用户输入的字符串生成正则表达式?有没有C#库可以做到这一点?

例如,用户输入字符串,例如ABCxyz123和C#代码自动生成[A-Z] {3} [a-z] {3} \ d {3}。 这是一个简单的字符串,但我们可以有更复杂的字符串,如

MON-0123 / AB / 5678-abc 2/7

或者

1234-678 / ABC :: 1234ABC?246

我已经有了一个字符串tokeniser(来自之前的stackoverflow问题)所以我可以从令牌列表中构造一个正则表达式。

但是我想知道是否有一个lib或C#代码可以做到。

编辑:重要,我还应该说:字符串中的实际字符不是重要的,而是字符的类型和数量。

例如,用户可以输入"模式" ABCxyz123字符串。

这将被解释为

3个大写字母后跟

3个小写字母后跟

3位

因此,其他用户(在编译时)必须输入与该模式匹配的字符串[A-Z] {3} [a-z] {3} \ d {3}。 QAZplm789

用户输入的字符串格式需要检查,而不是实际内容,如果有意义的话

1 个答案:

答案 0 :(得分:1)

杰瑞有一个相关的链接 creating a regular expression for a list of strings

此外还有一些其他链接。

我不是想做任何复杂的事情,例如NLP等。

我可以在推送时使用C#表达式构建器和动态linq,但这似乎有点过分和代码可维护的噩梦。

我将从标记化的字符串中编写自己的“简单”正则表达式构建器。

示例用例:

我工作的管理员用户可以通过键入字符串模式为每个字段设置字符串模式,我的代码将其转换为正则表达式,我将它们存储在数据库中。

例如:第一场需要3位数字。如果有2位数字然后发送到工作流程1,如果3,则发送到工作流程2.我可以简单地通过substr或什么来检查字符的数量。但这将是一个具体的解决方案。 我正在尝试为具有多个字段的多个文档执行此操作。此外,每个字段都可以有多个格式检查器。

我不想为众多文档中的每个字段编写特定的C#检查。

我会接受它,应该让我逗乐几天。