代码之家  ›  专栏  ›  技术社区  ›  Tequila Jinx

我可以在C中定义一个类Perl的绑定操作符(=~)吗?

  •  1
  • Tequila Jinx  · 技术社区  · 15 年前

    我真的很喜欢使用=~和!~在Perl中根据正则表达式计算字符串。我想把这个功能移植到C上,但是看起来,虽然您可以重载操作符,但不能创建新的操作符。

    我正在考虑扩展字符串类型以提供match()方法,该方法允许我将正则表达式传入以进行计算,但我想知道还有更好的方法。

    有人有更好的解决方案吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   R. Martinho Fernandes    15 年前

    尝试为字符串类创建一个扩展方法,该方法充当regex.match的“快捷方式”。 像这样:

    public static class RegexExtensions
    {
        public static bool Match(this string text, Regex re)
        {
            return Regex.Match(text, re);
        }
    }
    
        2
  •  0
  •   Brian Rasmussen    15 年前

    根据我的经验,.NET支持与Perl正则表达式相同的特性,但是语法要详细得多,因此需要使用一点。

    C不支持隐式变量的概念,因此始终必须提供输入字符串和匹配模式。换句话说,它是.NET中缺少的快捷方式,而不是显式匹配via=~和!~。

    如果你只想找到匹配项,那么regex.match和=~做同样的事情。如果要匹配和替换,则必须使用replace方法。对于!~接线员,你只要用!以及相关的正则表达式方法。

    这需要更多的输入,但你可以得到你想要的效果。