我有一个日志文件,其中有堆栈跟踪,如下所示。我当前将其存储为列表
。
[25/05/21 10:29:09:262 BST] example log entry
[25/05/21 10:29:09:246 BST] another example log entry
[25/05/21 10:29:09:262 BST]
[25/05/21 10:29:09:246 BST]
List<String> allDates = new ArrayList<String>();
for (String stackTrace : stackTraces) {
Matcher m = Pattern.compile("^([\\d{2}[^0-9]\\d{2}[^0-9]\\d{2,4}.\\d{2} \\d{2}:\\d{2}:\\d{2}:\\d{3} BST])")
.matcher(stackTrace);
while (m.find()) {
allDates.add(m.group());
}
}
我在这里遇到的问题是,由于某种原因,如果我打印出alldates
中的每个值,它给我的只是[
而不是[25/05/21 10:29:09:262BST]
。我99%肯定我实际的正则表达式是正确的,因为我使用的是一个正则表达式网站,您可以输入一个字符串和一个正则表达式,它将解释匹配。
如果您使用的至少是Java8,则可以使用stream API获得AllDates
列表,而不是for
循环。
/*
* import java.util.List;
* import java.util.regex.Matcher;
* import java.util.regex.Pattern;
* import java.util.stream.Collectors;
*/
Pattern pttrn = Pattern.compile("^\\[\\d{2}/\\d{2}/\\d{2,4} \\d{2}:\\d{2}:\\d{2}:\\d{3} BST]");
List<String> allDates = stackTraces.stream()
.filter(stackTrace -> pttrn.matcher(stackTrace).find())
.map(stackTrace -> stackTrace.substring(0, stackTrace.indexOf(']') + 1))
.collect(Collectors.toList());
筛选器
仅返回具有所需模式
的行。映射
仅返回所需的字符串部分。收集
创建上一个映射
返回的所有值的列表。
我试图解析这样的字符串; /^/^这是一个大/*这是一个粗体文本/-这是删除。我需要$/^和$之间的文本 在regexr和java regex tester上对regex进行了测试,并显示了它的工作状态。
我正在查询URI以从web服务获取一些数据。那很好。但我注意到,我的json hase多页的page\u计数,但只返回第一页数据。 以下是json的样子: 如何返回所有页面而不是只返回第一页?我知道这可能不是个好主意,但我该怎么做? 更新:web服务的URI类似于: 谢谢
我不明白为什么所有这些空字符串之间。
问题内容: 我正在编写一个Java实用程序,可以帮助我生成用于性能测试的数据负载。这将是真正冷却到能够指定弦乐正则表达式让我产生吐出来匹配这个哪些东西。有没有已经烤好的东西可以用来做呢?还是有一个图书馆可以带给我大部分帮助? 问题答案: 我正在编写一个Java实用程序,可以帮助我生成用于性能测试的数据负载。这将是真正冷却到能够指定弦乐正则表达式让我产生吐出来匹配这个哪些东西。有没有已经烤好的东西可
我尝试进入调试模式,它似乎无法提取字符串的特定部分。我做错了什么?我的regex错了吗?它似乎与我尝试过的所有在线regex构建器/测试器相匹配。