Cómo extraer una subcadena usando expresiones regulares

Resuelto asdasd asked hace 13 años • 14 respuestas

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";
asdasd avatar Jan 12 '11 03:01 asdasd
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
Mark Byers avatar Jan 11 '2011 20:01 Mark Byers

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, "'");
Beothorn avatar Mar 13 '2013 20:03 Beothorn
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));
        }

    }
}
Sean McEligot avatar Jan 11 '2011 20:01 Sean McEligot

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 .

Bohemian avatar Jan 14 '2017 23:01 Bohemian