如何在C#中创建可选参数Regular Expression

gen*_*ser 3 c# regex

我有以下情况

我必须匹配类似的东西

abc#(x,-12d)

or

abc#(x,-12d, 24d) etc.
Run Code Online (Sandbox Code Playgroud)

这意味着最后一个参数是可选的.

我已经制作了正则表达式并且它可以正常工作,但由于我不知道如何制作可选项,因此我将使用两种不同的regExpression.

public static bool ValidFn(string input)
        {          
            string regEx1 = @"^[a-zA-Z]*#\([A-Za-z0-9]+,[-|+]?\d+[dwmqy],[-|+]?\d+[dwmqy]\)";
            string regEx2 = @"^[a-zA-Z]*#\([A-Za-z0-9]+,[-|+]?\d+[dwmqy]\)";
            Regex r1 = new Regex(regEx1);
            Regex r2 = new Regex(regEx2);
            Match m1 = r1.Match(input);
            Match m2 = r2.Match(input);
            if (m1.Success || m2.Success) return true;
            else return false;
        }
Run Code Online (Sandbox Code Playgroud)

如何使regExp1成为可选项,以便我可以省去regExp2的使用.

谢谢

Hug*_*ron 5

?正则表达式中的字符表示"重复0或1次".因此,它使语句可选.

你想要捕获它存在的最后一个",24d".你需要包装什么捕获",24d"?字符.

这个正则表达式将:

string regEx1 = @"^[a-zA-Z]*#\([A-Za-z0-9]+,[-|+]?\d+[dwmqy](,\s*[-|+]?\d+[dwmqy])?\)";
Run Code Online (Sandbox Code Playgroud)

请注意,我添加了一个\s*以捕获空白后的空格,