我有以下正则表达式:
([0-9]+),'(.)':([0-9]+),(L|R|'.')
它与此匹配得很好:
1,'a':1,R
但是,如果我用空格替换a,它会失败:
1,' ':1,R
为什么没有。匹配吗?空格不归类为字符吗?我不能使用\s因为我不想匹配制表符和换行符。我也试过:
([0-9]+),'(.| )':([0-9]+),(L|R|'.')
但这也不起作用(而且我没有IgnorePatternWhitespace
启用)。
我有以下正则表达式:
([0-9]+),'(.)':([0-9]+),(L|R|'.')
它与此匹配得很好:
1,'a':1,R
但是,如果我用空格替换a,它会失败:
1,' ':1,R
为什么没有。匹配吗?空格不归类为字符吗?我不能使用\s因为我不想匹配制表符和换行符。我也试过:
([0-9]+),'(.| )':([0-9]+),(L|R|'.')
但这也不起作用(而且我没有IgnorePatternWhitespace
启用)。
我无法重现您所看到的内容:
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|'.')
所以它可以匹配引号之间的多个字符。
I haven't tried in .NET, but the dot is language and implementation specific. Try:
([0-9]+),'([.| ])':([0-9]+),(L|R|'.')
Use \0x0020 which will match a single space character.