我有以下正则表达式:
([0-9]+),'(.)':([0-9]+),(L|R|'.')
它匹配得很好:
1,'a':1,R
但是,如果我用空格替换 a ,则会失败:
1,' ':1,R
。为何不匹配?没有被归类为角色的空间?我无法使用 \ s ,因为我不想匹配标签和换行符。我也尝试过:
([0-9]+),'(.| )':([0-9]+),(L|R|'.')
但这也行不通(我没有IgnorePatternWhitespace
启用)。
答案 0 :(得分: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"));
}
}
打印“True”。
你是否有可能在引号之间有另一个字符?有些非印刷字符?文字来自哪里?
您可以尝试将其更改为:
([0-9]+),'([^']+)':([0-9]+),(L|R|'.')
所以它可以匹配引号之间的多个字符。
答案 1 :(得分:0)
我没有在.NET中尝试,但点是语言和实现特定的。尝试:
([0-9]+),'([.| ])':([0-9]+),(L|R|'.')
答案 2 :(得分:0)
使用 \ 0x0020 ,它将匹配单个空格字符。