我是正则表达式的新手,所以如果这是一个微不足道的问题,请耐心等待。我正在关注this 我想看看我的输入是否具有以下模式:
<any number of spaces><one or more of alphanumeric character>;<any number of possible spaces>
如果我的输入有上面的表达式,那么我返回匹配。
我的正则表达式如下:
\s*\w+\s*?;\s*
当我这样做时
Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase)
即使我有"a;"
或" a;"
之类的有效输入,我最终也会收到错误信息。
当我使用RegEx工具检查时,似乎它匹配整个事物,然后它尝试再次找到具有第二个\ s *的子匹配,此时它表示没有子匹配。任何人都可以解释为什么我会得到一个假的?
答案 0 :(得分:1)
问题是中期:“\ s *?”。你应该在组中阅读正则表达式,所以你有(所有空格都表示组而不是正则表达式的一部分):\ s * \ w + \ s *? ; \ S *
它是怎么回事:\ s *?
你应该有 \ S * \ W +; \ S * 这应该有用。
答案 1 :(得分:1)
以下内容将根据您的需要进行操作。
\s*\w+;\s*
示例:
Console.WriteLine(Regex.IsMatch("a;", @"\s*\w+;\s*")); // True
Console.WriteLine(Regex.IsMatch(" a;", @"\s*\w+;\s*")); // True
Console.WriteLine(Regex.IsMatch("a; ", @"\s*\w+;\s*")); // True