2011-09-19 53 views
0

我有這樣一個文本文件,選擇文字:如何從一個文件

「GET /opacial/index.php?op=results &目錄= 1個&視圖= 1種&語言= 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 = 1 1 &頁= 1

,我想割字「查詢」後,與之前的「&搜索」中的所有字符。 (上面的粗體)。 我試圖削減數據,使用模式,但有些事情是錯誤的。你能給我一個例子上面的例子代碼?

編輯: 的其他問題,除了上面的一個是,匹配僅用於charSequences,和我有一個文件,不能強制轉換爲CharSequence中...:\

+0

我們展示你的努力。你嘗試過哪種模式? –

+1

「我正在嘗試刪除數據」 - 向我們展示您嘗試過的內容,並告訴您哪裏出錯。 – adarshr

+0

[你試過了什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

回答

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 
+0

正則表達式看起來不錯,但我不確定我會如何使用它文件..我有一個文件就像我的第一篇文章,我必須保持之間的「查詢」和「搜索」......這將如何發生與正則表達式? – user758084

+0

@ user758084回覆編輯張貼 –

+0

它的工作原理就像你說的,但是當我改變String s = ....用String s = File.toString();我沒有輸出......這意味着沒有什麼可匹配的。但是我的文件與上面的範例和其他一些數據完全一樣::\ – user758084

3

類似的東西:

String yourNewText=yourOldText.split("query")[1].split("&search")[0]; 

來看看如何文件讀入一個String,你可以看看here(有不同possiblities)

+0

編輯:我忘了[0]抱歉 – Neifen

+0

我不確定,如果這可以完成這項工作,導致我的「yourOldText」是一個文件...文件如何發生這種情況? – user758084

+0

@ user758084通過類似Apache Commons FileUtils.readFileToString的方式將文件讀入字符串。請注意,我提出的正則表達式解決方案還需要將文件讀入字符串。 –