extractTextElementsWithRegex static method
List<List<TextElement> >
extractTextElementsWithRegex(
- List<
TextElement> textElements, - RegExp regExp
Return regex result as List<List
List<BrsTextElement> elementList = ['How', 'are', 'you', '?'];
RegExp regExp = RegExp(r'are you');
Result : elementList = ['are', 'you']
Implementation
static List<List<TextElement>> extractTextElementsWithRegex(
List<TextElement> textElements,
RegExp regExp,
) {
List<List<TextElement>> listScannedText = [];
String text = '';
for (var textElement in textElements) {
text +=
'${textElements.first == textElement ? '' : ' '}${textElement.text}';
}
List<RegExpMatch> matchs = regExp.allMatches(text).toList();
for (RegExpMatch match in matchs) {
if (match.start < 0 || match.end == 0) {
continue;
}
/// Rebuild the new list of TextElements
List<TextElement> foundElements = [];
int elementBeforeMatch = text
.substring(0, match.start)
.split('')
.where((char) => char == ' ')
.length;
int elementBetweenMatch = text
.substring(match.start, match.end)
.split('')
.where((char) => char == ' ')
.length +
1;
for (int i = 0; i < elementBetweenMatch; i++) {
if (elementBeforeMatch + i < textElements.length) {
foundElements.add(textElements[elementBeforeMatch + i]);
}
}
listScannedText.add(foundElements);
}
return listScannedText;
}