我在Dart中有一个函数,它使用正则表达式以不同的方式处理匹配和不匹配的字符串部分。
Future<List<String>> _getQuestionParts(String questionText) async {
List<String> parts = List();
questionText.splitMapJoin(
RegExp(r'&&[\s\S]*?\S##'),
onNonMatch: (nonMatch) {
nonMatch = nonMatch.trim();
if (nonMatch.isNotEmpty) {
parts.add(_texToLatex(nonMatch));
}
return nonMatch;
},
onMatch: (match) {
String matchString = match.group(0);
parts.add(matchString);
return matchString;
},
);
for (int i = 0; i < parts.length; i++) {
String part = parts[i];
if (part.startsWith('&&') && part.endsWith('##')) {
parts[i] = await _getBase64String(part, 'assets');
}
}
return parts;}
样本文本是-
图中所示冷凝器系统的总能量为&&
/17.ELECTROSTATIC电位和电容_12.jpeg&#介质/17.静电势和CAPACITANCE_12.txt##
在这里,两个被不同处理的部分是-
1.
图中所示的冷凝器系统中的总能量将是
&&media/17.静电势与电容_12.jpeg&#媒体/17.静电势与CAPACITANCE_12.txt##
有办法在JavaScript中获得这个功能吗?
我认为这将是一个分裂和匹配的组合,但它应该返回匹配的和不匹配的部分在他们正确的顺序。
发布于 2020-09-08 17:34:08
它是用一个组(括号)来解决的,同时分裂-
var matches = text.split(/(&&[\s\S]+?&&##[\s\S]+?##)/gm);https://stackoverflow.com/questions/63798834
复制相似问题