Pergunta

Eu tenho a seguinte expressão regular:

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

Combina muito bem:

1,'a':1,R

No entanto, se eu substituir uma Com um espaço, falha:

1,' ':1,R

Por que não . combinar? Um espaço não é classificado como personagem? Eu não posso usar s Porque não quero combinar as guias e quebras de linha. Eu também tentei:

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

Mas isso também não funciona (e eu não tenho IgnorePatternWhitespace ativado).

Foi útil?

Solução

Não consigo reproduzir o que você está vendo:

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"));
    }
}

Imprime "True".

É possível que você tenha outro personagem entre as citações também? Algum personagem não imprimor? De onde vem o texto?

Você pode tentar alterar para:

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

Portanto, poderia corresponder a mais de um personagem entre as citações.

Outras dicas

Não tentei no .NET, mas o ponto é específico para linguagem e implementação. Tentar:

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

Usar 0x0020 que corresponderá a um único personagem espacial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top