在我看来,解决您的问题的最佳方法是使用Java regex。使用正则表达式,您可以定义要检索的文本组和文本类型。我很久没有使用 Java 了,所以我会尽力帮助你。我会尽力为您指明正确的方向。
首先,编译一个模式:
Pattern pattern = Pattern.compile("^\d{1,2}:\d{1,2} GET (.*?) #\d+$", Pattern.MULTILINE);
正则表达式的第一部分表示您期望一个或两个数字后跟一个冒号,然后再跟一个或两个数字。之后是 GET(如果您期望这些单词,您可以使用 GET|POST 或 \w+? 如果您期望任何单词)。然后你用括号定义你想要的组。最后,您将散列和任意数量的数字与至少一位数字放在一起。您可能会考虑放置标志 DOTALL 和 CASE_INSENSITIVE,尽管我认为您不会需要它们。
然后你继续使用匹配器:
Matcher matcher = pattern.matcher(textToParse);
while (matcher.find())
{
//extract groups here
String group = matcher.group(1);
}
在while
循环中,您可以使用matcher.group(1)
括号来查找您选择的组中的文本(您要提取的文本)。matcher.group(0)
给出整个发现,这不是你目前正在寻找的(我猜)。
抱歉,代码中的任何错误,尚未经过测试。希望这能让你走上正确的道路。