Die PREG_-Funktionen von PHP sind sehr einfach zu verwenden und sehr mächtig.
Ich habe die Einfachheit bei Java vermisst. Java ist da sehr viel komplexer. Also habe ich die Java Funktionalität in Methoden verpackt, die von der Struktur den PHP-Funktionen sehr gleichen und sich auch genau so verwenden lassen. Etwas Prozedur-orientiertes Programmieren in Java.
package de.hannespries.commons.regex;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PREG {
public PREG() {
}
public static String replace(String pattern, String replacement, String source, boolean caseSensitive) {
Pattern patternObj = Pattern.compile(pattern, Pattern.MULTILINE);
if (!caseSensitive) {
patternObj = Pattern.compile(pattern, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
}
Matcher matcher = patternObj.matcher(source);
String parsed = matcher.replaceAll(replacement);
return parsed;
}
public static String replace(String pattern, String replacement, String source) {
return replace(pattern, replacement, source, true);
}
public static boolean match(String pattern, String source) {
Pattern patternObj = Pattern.compile(pattern, Pattern.MULTILINE);
Matcher matcher = patternObj.matcher(source);
return matcher.matches();
}
public static boolean matchFind(String pattern, String source) {
Pattern patternObj = Pattern.compile(pattern, Pattern.MULTILINE);
Matcher matcher = patternObj.matcher(source);
return matcher.find();
}
public static List<String> matchAll(String pattern, String source) {
List<String> result = new ArrayList<String>();
Matcher m = Pattern.compile(pattern).matcher(source);
while (m.find()) {
result.add(m.group());
}
return result;
}
public static List<String> split(String pattern, String source) {
String[] parts = source.split(pattern);
List<String> list = new ArrayList<String>();
for (int ii = 0; ii < parts.length; ii++) {
list.add(parts[ii]);
}
return list;
}
public static List<String> find(String pattern, String source) {
List<String> result = new ArrayList<String>();
Pattern compiled = Pattern.compile(pattern);
Matcher matcher = compiled.matcher(source);
while (matcher.find()) {
result.add(matcher.group());
}
return result;
}
}