regex C#System.Text.RegularsExpressions中的正则表达式库是否忽略了一些次要的错误?

ukxgm1gy  于 2023-06-25  发布在  C#
关注(0)|答案(1)|浏览(69)

所以我有一个程序,用于清理字符串。一个这样的清理是摆脱周围的字符。举例:“这是我的课文”=>这是我的课文
为此,我使用正则表达式,其中一部分是:
@"(^+" + '"' + ".*" + '"' + "$)"
^后面的+是不需要的,当删除时,它的工作没有问题。但是我说,即使有它,该计划。但是我两个月前写了这个程序的一部分,所以我不能100%确定这是不是一个错字。
所以我的问题是在编译过程中,是否有可能忽略(/删除)正则表达式构造中的一些小错误?)只要它们在“regex世界”中没有任何意义?
我预计在正则表达式中输入错误的字符要么会导致错误,要么最多会导致正则表达式被忽略。
我在regex校正器(regex 101)中测试了有无它,确认根据regex规则,+被视为错误。
要测试的正则表达式:

(^+".*"$)

我在一个简单的编译器中测试了使用和不使用它的情况,当它们被分配删除任务时,它们都做了同样的工作。
编译器代码:

public static void Main()
{
    string artist = "\"an artist\"";
    if (surroundingRegex.IsMatch(artist))
    {
    artist = artist[1..^1];
    }
    Console.WriteLine(artist);
}
    
public static readonly Regex surroundingRegex = new(@"(^+" + '"' + ".*" + '"' + "$)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
vs91vp4v

vs91vp4v1#

^+表示一个或多个行开头。你只有一个,所以即使它很奇怪,它也能工作。
这绝对是所谓的code smell。您应该检查代码中的正则表达式,看看是否存在其他问题。

专业提示许多程序员避免使用正则表达式,除非我们没有可行的替代方案,因为它们不容易检查或测试。

相关问题