假设我有一个包含一些我希望根据正则表达式拆分的字符的向量。
更确切地说,我想基于逗号分隔字符串,然后是空格,然后是大写字母(根据我的理解,regex
命令如下所示:{{1} }(当我尝试here时)工作正常。)。
当我尝试在/(, [A-Z])/g
中实现此目的时,r
似乎不起作用,例如:
regex
它找不到分裂。我在这里做错了什么?
非常感谢任何帮助!
答案 0 :(得分:8)
这是一个解决方案:
private void saveTrace() {
try {
Log.d(mapsActivity.TAGDEBUG, "Sauvegarde de la trace automatique");
Log.d(mapsActivity.TAGDEBUG, "Nombre de point compris dans la trace automatique: " + String.valueOf(listBeanTraceUser.size()));
String sFileNameTrace = "trace_" + currentDate + ".xml";
File traceFile = new File(root, sFileNameTrace);
MediaScannerConnection.scanFile(mapsActivity, new String[]{traceFile.getAbsolutePath()}, null, null);
FileWriter writer = new FileWriter(traceFile);
BufferedWriter out = new BufferedWriter(writer, 32768);
String jsonStringTrace = gson.toJson(listBeanTraceUser);
Log.d(mapsActivity.TAGDEBUG, "lenght jsonStringTrace : " + String.valueOf(jsonStringTrace.length()));
out.write(jsonStringTrace);
out.close();
} catch (Exception e) {
Log.d(mapsActivity.TAGDEBUG, "Erreur lors de la Sauvegarde de la trace automatique");
e.printStackTrace();
}
}
请参阅IDEONE demo
输出:
strsplit(x, ", (?=[A-Z])", perl=T)
正则表达式 - [[1]]
[1] "Non MMF investment funds"
[2] "Insurance corporations"
[3] "Assets (Net Acquisition of)"
[4] "Loans"
[5] "Long-term original maturity (over 1 year or no stated maturity)"
[[2]]
[1] "Non financial corporations"
[2] "Financial corporations other than MFIs, insurance corporations, pension funds and non-MMF investment funds"
[3] "Assets (Net Acquisition of)"
[4] "Loans"
[5] "Short-term original maturity (up to 1 year)"
- 包含一个前瞻", (?=[A-Z])"
,它会检查但不会使用大写字母。在R中,您需要将(?=[A-Z])
与包含外观的正则表达式一起使用。
如果空格是可选的,或者逗号和大写字母之间可以有双倍空格,请使用
perl=T
还有一个支持Unicode字母的变体(带strsplit(x, ",\\s*(?=[A-Z])", perl=T)
):
\\p{Lu}