2

我有以下正则表达式:

([0-9]+),'(.)':([0-9]+),(L|R|'.')

它与此匹配得很好:

1,'a':1,R

但是,如果我用空格替换a,它会失败:

1,' ':1,R

为什么没有匹配吗?空格不归类为字符吗?我不能使用\s因为我不想匹配制表符和换行符。我也试过:

([0-9]+),'(.| )':([0-9]+),(L|R|'.')

但这也不起作用(而且我没有IgnorePatternWhitespace启用)。

4

3 回答 3

1

我无法重现您所看到的内容:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main()
    {
        Regex regex = new Regex("([0-9]+),'(.)':([0-9]+),(L|R|'.')");
        Console.WriteLine(regex.IsMatch("1,' ':1,R"));
    }
}

打印“真”。

引号之间是否还有另一个字符?一些非印刷字符?文字从何而来?

您可以尝试将其更改为:

([0-9]+),'([^']+)':([0-9]+),(L|R|'.')

所以它可以匹配引号之间的多个字符。

于 2009-09-09T22:23:45.593 回答
0

I haven't tried in .NET, but the dot is language and implementation specific. Try:

([0-9]+),'([.| ])':([0-9]+),(L|R|'.')
于 2009-09-09T22:24:04.500 回答
0

Use \0x0020 which will match a single space character.

于 2009-09-09T22:25:35.077 回答