Cómo extraer una subcadena usando expresiones regulares
Tengo una cadena que tiene dos comillas simples, el '
carácter. Entre las comillas simples están los datos que quiero.
¿Cómo puedo escribir una expresión regular para extraer "los datos que quiero" del siguiente texto?
mydata = "some string with 'the data i want' inside";
Aceptado
Suponiendo que desea la parte entre comillas simples, utilice esta expresión regular con Matcher
:
"'(.*?)'"
Ejemplo:
String mydata = "some string with 'the data i want' inside";
Pattern pattern = Pattern.compile("'(.*?)'");
Matcher matcher = pattern.matcher(mydata);
if (matcher.find())
{
System.out.println(matcher.group(1));
}
Resultado:
los datos que quiero
No necesitas expresiones regulares para esto.
Agregue apache commons lang a su proyecto ( http://commons.apache.org/proper/commons-lang/ ), luego use:
String dataYouWant = StringUtils.substringBetween(mydata, "'");
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern pattern = Pattern.compile(".*'([^']*)'.*");
String mydata = "some string with 'the data i want' inside";
Matcher matcher = pattern.matcher(mydata);
if(matcher.matches()) {
System.out.println(matcher.group(1));
}
}
}
Hay una frase sencilla para esto:
String target = myData.replaceAll("[^']*(?:'(.*?)')?.*", "$1");
Al hacer que el grupo coincidente sea opcional, esto también atiende a las cotizaciones que no se encuentran al devolver un espacio en blanco en ese caso.
Ver demostración en vivo .