Usar b em expressões regulares C# não funciona?
-
20-09-2019 - |
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?
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.