Question

Je me demande pourquoi l'expression rationnelle suivante ne correspond pas.

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

Notez que si je retire le mot caractères limites (\ b) de pattern, elle correspond bien. Y at-il quelque chose « \ b » qui pourrait être trébuche ça?

Était-ce utile?

La solution

Une citation est pas un caractère de mot, alors \ b ne sera pas un match si elle est là. Il n'y a pas de caractère de mot avant la citation; donc, avant la citation, il n'y a pas de transition entre les caractères de texte et des caractères non-mot. Donc, pas de match.

De votre commentaire, vous essayez de supprimer les caractères de mot d'une chaîne. La façon la plus simple de le faire serait de remplacer \w avec une chaîne vide:

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

Autres conseils

vous attendez un espace. il ne trouve pas un. remplacer

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

avec

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

et vous verrez ce que je veux dire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top