【发布时间】:2014-08-16 15:16:12
【问题描述】:
有没有办法在 C# 正则表达式中定义自定义字符类?
在 flex 中它以非常明显的方式完成:
DIGIT [0-9]
%%
{DIGIT}+ {printf( "An integer: %s (%d)\n", yytext, atoi( yytext ) );}
http://westes.github.io/flex/manual/Simple-Examples.html#Simple-Examples
正如this answer 中所述,在 PHP 中定义自定义字符类的工作方式如下:
(?(DEFINE)(?<a>[acegikmoqstz@#&]))\g<a>(?:.*\g<a>){2}
有没有办法在c#中实现这个结果,每次使用都不需要重复完整的字符类定义?
【问题讨论】:
-
@Rawling:这是同一种问题,但重点是:如何在 C# 中实现(如果可能)。
-
我的 reopen vote 的原因:链接副本中的答案根本不涉及 c#,它明确地只处理 Java 和 PHP。那里提出的解决方案不适用于 c# (@Rawling)
-
@HugoRune 好点,我认为这两个答案都只是字符串连接的特定语言版本,但 PHP 正在做一些特别的事情。有一个C# specific question here,我希望您吸引的大多数答案都会遵循相同的思路。
-
@Rawling 是的,我认为也不存在更好的解决方案。但我在谷歌上搜索这个问题,这里的这个问题似乎是唯一适用的结果,所以这里的明确答案应该对未来的访问者有用,即使它是否定的。
-
有可能使用命名块和类减法来获得相同的效果,或者可能有一个命名块已经匹配所需的字符