I have 100 RegEx masks like:
Код: Выделить всё
Service - (?Start|End) (?\w*) - (?[0-9-]{10})(?: - (?.*))?
Код: Выделить всё
Service - End Foo - 2024-03-09
So I need in java to compose a sentence by replacing the data I retrieved inside the RegEx mask. There is a way in java?
Thank You
Example (I don't implement here all method):
Код: Выделить всё
public class Main {
public static void main(String[] args) {
List rowsData = new ArrayList();
List masks = new ArrayList();
loadData(rowsData);
loadMasks(masks);
for (var data : rowsData) {
String mask = findMask(data, masks);
if (masks != null) {
Map values = getValues(data, mask);
var endSentence = prepareOutcome(mask, values);
for (var endData : rowsData) {
if (endData.contains(endSentence)) {
System.out.println("End found at " + rowsData.indexOf(endData));
return;
}
}
System.out.println("End not found");
}
}
System.out.println("Finish Searching");
}
private static String prepareOutcome(String mask, Map values) {
// TODO: What can I do?
var stringToSearch = "Service - End Foo - 2024-03-09";
return stringToSearch;
}
private static void loadMasks(List masks) {
masks.add("Service - (?Start|End) (?\\w*) - (?[0-9-]{10})(?: - (?.*))?");
//... other Masks
}
private static void loadData(List rowsData) {
//... Other Data
rowsData.add("Service - Start Foo - 2024-03-09");
rowsData.add("Service - Start Foo - 2024-03-10");
rowsData.add("Service2 - Foo something Bar - Start");
// Other Data
rowsData.add("Service - End Foo - 2024-03-10 - Outcome KO");
rowsData.add("Service2 - Foo something Bar - End");
rowsData.add("Service - End Foo - 2024-03-09 - Outcome OK");
}
private static String findMask(String data, List masks) {
return "Service - (?Start|End) (?\\w*) - (?[0-9-]{10})(?: - (?.*))?";
}
private static Map getValues(String data, String mask) {
Map values = new HashMap();
values.put("status", "Start");
values.put("etl", "Foo");
values.put("date", "2024-03-09");
return values;
}
Источник: https://stackoverflow.com/questions/781 ... sk-in-java