"¡Hola, amigo!"

"Hasta donde yo sé, Rishi ya te ha hablado de las expresiones regulares".

"Sí, fue muy interesante".

"Genial, ahora te hablaré sobre el uso de expresiones regulares para trabajar con cadenas".

"Comencemos con la pregunta más simple:"

1) ¿Cómo verifico si una cadena coincide con el patrón especificado por una expresión regular?

"Hay un método de coincidencias para esto. Pasa una cadena que contiene una expresión regular y el método devuelve verdadero o falso".

Métodos) Ejemplo(s)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
Resultado:

false (the String doesn't start with "news")

2) ¿Cómo reemplazo todas las subcadenas coincidentes con cadenas diferentes?

"Hay dos métodos para esto".

"El método replaceAll reemplaza todas las apariciones de una subcadena con otra cadena".

"El método replaceFirst reemplaza la primera aparición de una subcadena pasada con una cadena especificada".

Métodos) Ejemplo(s)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
Resultado:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
Resultado:

s2 == "Good nEXs, everyone!";

3) ¿Cómo divido una cadena en partes?

"Para esto tenemos el método split, que toma una máscara delimitadora:"

Métodos) Ejemplo(s)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Resultado (una matriz de tres cadenas):

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

"La clase StringTokenizer es otra forma de dividir una cadena en partes ".

"Esta clase no usa expresiones regulares. En su lugar, simplemente pasa una cadena que contiene un conjunto de delimitadores. La ventaja de este enfoque es que no divide toda la cadena en partes de una vez, sino que se mueve lentamente de el principio hasta el final".

"La clase consta de un constructor y dos métodos. Debe pasar la cadena que estamos dividiendo en el constructor, junto con una cadena que contiene el conjunto de caracteres delimitadores".

El método nextToken devuelve el siguiente token (subcadena).

El método hasMoreTokens() devuelve verdadero si todavía hay subcadenas que aún no se han devuelto.

Métodos) Ejemplo(s)
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
Salida de pantalla:

Good
ws
v
ryo
!

"Tenga en cuenta que cualquier carácter en la segunda cadena que se pasa al constructor StringTokenizer se trata como un delimitador".

"Una vez más, todo parece claro. Es posible que no pueda escribir este código por mí mismo de inmediato, pero entiendo lo que está pasando aquí".

"Excelente, entonces asumiremos que has dominado el tema".