Pergunta

Gostaria de saber por que o seguinte Regex não corresponde.

string query = "\"1 2\" 3";
string pattern = string.Format(@"\b{0}\b", Regex.Escape("\"1 2\""));
string repl = Regex.Replace(query, pattern, "", RegexOptions.CultureInvariant);

Observe que se eu remover a palavra caracteres de limite ( b) de pattern, Combina bem. Existe algo sobre ' b' que pode estar tropeçando isso?

Foi útil?

Solução

Uma cotação não é um personagem de palavra, então b não será uma correspondência se estiver lá. Não há caráter de palavra antes da citação; Portanto, antes da citação, não há transição entre caracteres de palavras e caracteres não palavras. Então, sem correspondência.

Do seu comentário, você está tentando remover os caracteres do Word de uma string. A maneira mais direta de fazer isso seria substituir \w com uma corda vazia:

string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);

Outras dicas

Você está esperando um espaço em branco. não está encontrando um. substituir

string query = "\"1 2\" 3";

com

string query = "\" 1 2 \" 3";

E você verá o que quero dizer.

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