我有一个文本文件,如:
“GET /opacial/index.php?op=results&catalog=1&view=1&language=el&numhits=10&query=\xce\x95 \ xce \ xbb \ xce \ XBB \ XCE \ XAC \ XCE \ XB4 \ XCE \ XB1%20 - 20%\ XCE \ X95 \ XCE \ XB8 \ XCE \ XBD \ XCE \ xb9 \ XCE \ XBA \ XCE \ XAD \ XCF \ X82%20 \ XCF \ X83 \ XCF \的x87 \ XCE \ XAD \ XCF \ X83 \ XCE \ XB5 \ XCE \ xb9 \ XCF \ X82%20个
- %20 \ XCE \ X99 \ XCF \ X83 \ XCF \ X84 \ XCE \ XBF \ XCF \ X81 \ XCE \ XAF \ XCE \ XB1 &安培; search_field = 11&安培;页= 1
我希望在“查询”之后和“& search”之前删除所有字符。 (上面的粗体)。 我正在尝试使用模式来剪切数据,但是出了点问题。你能举个例子说明上面的示例代码吗?
编辑: 另一个问题,除了上面的问题是匹配器只用于charSequences,我有一个文件,不能转换为charSequence ...:\
答案 0 :(得分:3)
类似的东西:
String yourNewText=yourOldText.split("query")[1].split("&search")[0];
要了解如何将文件读入String
,您可以查看here(有不同的可能性)
答案 1 :(得分:0)
".*query\\=(.*)\\&search_field.*"
这个正则表达式可以帮助您捕获要删除的内容。然后 String.replace 就可以了。
编辑 - 回复评论。以下代码......
String s = "GET /opacial/index.php?op=results&catalog=1&view=1&language=el&numhits=10&query=\\xce\\x95\\xce\\xbb\\xce\\xbb\\xce\\xac\\xce\\xb4\\xce\\xb1%20--%20\\xce\\x95\\xce\\xb8\\xce\\xbd\\xce\\xb9\\xce\\xba\\xce\\xad\\xcf\\x82%20\\xcf\\x83\\xcf\\x87\\xce\\xad\\xcf\\x83\\xce\\xb5\\xce\\xb9\\xcf\\x82%20 --%20\\xce\\x99\\xcf\\x83\\xcf\\x84\\xce\\xbf\\xcf\\x81\\xce\\xaf\\xce\\xb1&search_field=11&page=1";
Pattern p = Pattern.compile(".*query\\=(.*)\\&search_field.*");
Matcher m = p.matcher(s);
if (m.matches()){
String betweenQueryAndSearch = m.group(1);
System.out.println(betweenQueryAndSearch);
}
产生以下输出....
\xce\x95\xce\xbb\xce\xbb\xce\xac\xce\xb4\xce\xb1%20--%20\xce\x95\xce\xb8\xce\xbd\xce\xb9\xce\xba\xce\xad\xcf\x82%20\xcf\x83\xcf\x87\xce\xad\xcf\x83\xce\xb5\xce\xb9\xcf\x82%20 --%20\xce\x99\xcf\x83\xcf\x84\xce\xbf\xcf\x81\xce\xaf\xce\xb1