Regex: C # extrae texto entre comillas dobles

Quiero extraer solo esas palabras entre comillas dobles. Entonces, si el contenido es:

¿Le gustaría que le envíen “respuestas” a sus “preguntas” por correo electrónico?

La respuesta debe ser

  1. preguntas

Prueba esta regex :

 \"[^\"]*\" 

o

 \".*?\" 

explique :

[^ character_group ]

Negación: Coincide con cualquier carácter que no esté en character_group.

*?

Coincide con el elemento anterior cero o más veces, pero las veces que sea posible.

y un código de muestra:

 foreach(Match match in Regex.Matches(inputString, "\"([^\"]*)\"")) Console.WriteLine(match.ToString()); //or in LINQ var result = from Match match in Regex.Matches(line, "\"([^\"]*)\"") select match.ToString(); 

Basado en la respuesta de @Ria:

 static void Main(string[] args) { string str = "Would \"you\" like to have responses to your \"questions\" sent to you via email?"; var reg = new Regex("\".*?\""); var matches = reg.Matches(str); foreach (var item in matches) { Console.WriteLine(item.ToString()); } } 

El resultado es:

 "you" "questions" 

Puede usar string.TrimStart () y string.TrimEnd () para eliminar las comillas dobles si no lo desea.

Me gustan las soluciones de expresiones regulares. También podrías pensar en algo como esto

 string str = "Would \"you\" like to have responses to your \"questions\" sent to you via email?"; var stringArray = str.Split('"'); 

Luego toma los elementos odd de la matriz. Si usa linq, puede hacerlo así:

 var stringArray = str.Split('"').Where((item, index) => index % 2 != 0); 

Esto también le roba a Regex de @Ria, pero le permite ingresarlos en una matriz donde luego elimina las comillas:

 strText = "Would \"you\" like to have responses to your \"questions\" sent to you via email?"; MatchCollection mc = Regex.Matches(strText, "\"([^\"]*)\""); for (int z=0; z < mc.Count; z++) { Response.Write(mc[z].ToString().Replace("\"", "")); } 

Prueba esto (\"\w+\")+

Te sugiero que descargues Expresso

http://www.ultrapico.com/Expresso.htm

Necesitaba hacer esto en C # para analizar CSV y ninguno de estos funcionó para mí, así que se me ocurrió esto:

 \s*(?:(?:(['"])(?(?:\\\1|[^\1])*?)\1)|(?[^'",]+?))\s*(?:,|$) 

Esto analizará un campo con o sin comillas y excluirá las comillas del valor al tiempo que mantiene las comillas y comillas insertadas. contiene el valor del campo analizado. Sin usar grupos con nombre, el grupo 2 o 3 contiene el valor.

Hay formas mejores y más eficientes para realizar el análisis de CSV y este no será efectivo para identificar los datos incorrectos. Pero si puede estar seguro de su formato de entrada y el rendimiento no es un problema, esto podría funcionar para usted.