Tengo una cadena que tiene dos comillas simples, el '
personaje. 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";
java
regex
string
text-extraction
asdasd
fuente
fuente
this 'is' my 'data' with quotes
se detendría antes y volvería enis
lugar de hacer coincidir tantos caracteres como sea posible y regresaris' my 'data
, que es el comportamiento predeterminado.No necesitas expresiones regulares para esto.
Agregue apache commons lang a su proyecto ( http://commons.apache.org/proper/commons-lang/ ), luego use:
fuente
fuente
Hay una frase simple para esto:
Al hacer que el grupo coincidente sea opcional, esto también atiende las citas que no se encuentran al devolver un espacio en blanco en ese caso.
Ver demostración en vivo .
fuente
Debido a que también seleccionó Scala, una solución sin expresiones regulares que se ocupa fácilmente de múltiples cadenas entre comillas:
fuente
.split('\'').get(2)
o algo así en Java? Creo que es posible que deba hacerse un escáner cerebral si cree que es una solución legible: parece que alguien estaba tratando de hacerme un código de golf.fuente
como en javascript:
La expresión regular real es:
/'([^']+)'/
si usa el modificador no codicioso (según otra publicación) es así:
Está más limpio.
fuente
En Scala
fuente
String dataIWant = mydata.split("'")[1];
Ver demostración en vivo
fuente
Apache Commons Lang proporciona una gran cantidad de utilidades auxiliares para la API java.lang, especialmente los métodos de manipulación de cadenas. En su caso, las subcadenas de inicio y finalización son las mismas, así que simplemente llame a la siguiente función.
Si las subcadenas de inicio y fin son diferentes, utilice el siguiente método sobrecargado.
Si desea todas las instancias de las subcadenas coincidentes, use,
Para el ejemplo en cuestión, obtener todas las instancias de la subcadena coincidente
fuente
puede usar esto que uso mientras que el bucle para almacenar todas las subcadenas coincidentes en la matriz si usa
if (matcher.find()) { System.out.println(matcher.group(1)); }
obtendrá subcadenas de coincidencias para que pueda usar esto para obtener todas las subcadenas de coincidencias
fuente
agregue la dependencia apache.commons en su pom.xml
Y debajo del código funciona.
fuente
De alguna manera, el grupo (1) no funcionó para mí. Usé el grupo (0) para encontrar la versión de la URL.
fuente