regularexpressions regular online ismatch c# regex

online - Expresión regular multilínea en C#



regular expression c# email (2)

Aquí hay una expresión regular para emparejar. Requiere la opción RegexOptions.Singleline , que hace que el . emparejar nuevas líneas.

<(/w+) name="([^"]*)">(.*?)<//1>

Después de esta expresión regular, el primer grupo contiene la etiqueta, el segundo el nombre de la etiqueta y el tercero el contenido entre las etiquetas. Así que la cadena de reemplazo podría verse así:

[$1 name="$2"]$3[/$1]

En C #, esto se ve como:

newString = Regex.Replace(oldString, @"<(/w+) name=""([^""]*)"">(.*?)<//1>", "[$1 name=/"$2/"]$3[/$1]", RegexOptions.Singleline);

Esta pregunta ya tiene una respuesta aquí:

¿Cómo hago coincidir y reemplazar texto usando expresiones regulares en modo multilínea?

Conozco la opción RegexOptions.Multiline , pero ¿cuál es la mejor manera de especificar que todos coincidan con los nuevos caracteres de línea en C #?

Entrada:

<tag name="abc">this is a text</tag>

Salida:

[tag name="abc"]this is a test [/tag]

Aahh, encontré el problema real. ''&'' y '';'' En Regex, el texto coincide en una sola línea, mientras que en el Regex es necesario escapar para que funcione en los casos en que también haya nuevas líneas.


Si quiere decir que tiene que haber un carácter de nueva línea para que la expresión coincida, entonces /n lo hará por usted.

De lo contrario, creo que podría haber malinterpretado las banderas Multiline / Singleline . Si desea que su expresión coincida en varias líneas, realmente desea utilizar RegexOptions.Singleline . Lo que significa es que trata toda la cadena de entrada como una sola línea, ignorando así las nuevas líneas. ¿Es esto lo que buscas ...?

Ejemplo

Regex rx = new Regex("<tag name=/"(.*?)/">(.*?)</tag>", RegexOptions.Singleline); String output = rx.Replace("Text <tag name=/"abc/">test/nwith/nnewline</tag> more text...", "[tag name=/"$1/"]$2[/tag]");