La expresión regular en línea simple y probada que contiene delimitadores de expresiones regulares no funciona en código C#
Tengo una expresión regular como esta:
name = dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487
name = Regex.Replace(name, @"/\W/g", "");
Esta expresión regular debería reemplazar "/", "-", "." con "". Pero no es así, ¿alguien puede explicarme por qué?
No utilice delimitadores de expresiones regulares:
name = Regex.Replace(name, @"\W", "");
En C#, no puede utilizar delimitadores de expresiones regulares ya que la sintaxis para declarar una expresión regular es diferente de la de PHP, Perl o JavaScript u otros que admiten la <action>/<pattern>(/<substitution>)/modifiers
declaración de expresiones regulares.
Solo para evitar confusión terminológica: los modificadores en línea (que imponen búsqueda que no distingue entre mayúsculas y minúsculas, modos multilínea, de una sola línea, detallados y otros) son ciertamente compatibles y se pueden usar en lugar de los RegexOptions
indicadores correspondientes (aunque el número de RegexOptions
indicadores posibles es mayor que el de los modificadores en línea). ). Aún así, los delimitadores de expresiones regulares no influyen en absoluto en el patrón de expresiones regulares, son solo parte de la sintaxis de la declaración y no afectan el patrón en sí. Digamos que son simplemente una especie de sustitutos ;
o líneas de código que separan líneas nuevas.
En C#, los delimitadores de expresiones regulares no son necesarios y, por lo tanto, no se admiten. El estilo Perl s/\W//g
se escribirá como var replaced = Regex.Replace(str, @"\W", string.Empty);
. Etcétera.