java 將英文文章 按句子,標點符號分割,正則表示式
package com.gao; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestMain { private static final int MIN_THRESHOLD = 50; private static final int MAX_THRESHOLD = 80; private static List<String> list = new ArrayList<String>(); /** * @param args */ public static void main(String[] args) { String str = null; try { InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("D:\\Users\\gao\\Desktop\\1.txt")),Charset.defaultCharset()); BufferedReader br = new BufferedReader(isr); StringBuffer sb = new StringBuffer(MAX_THRESHOLD); while ((str=br.readLine())!=null) { //String [] substrs = str.split("。|\\?|\\!|\\?|\\.|!"); /*正則表示式:句子結束符*/ String regEx="[。?!?.!]"; Pattern p =Pattern.compile(regEx); Matcher m = p.matcher(str); /*按照句子結束符分割句子*/ String[] substrs = p.split(str); /*將句子結束符連線到相應的句子後*/ if(substrs.length > 0) { int count = 0; while(count < substrs.length) { if(m.find()) { substrs[count] += m.group(); } count++; } } // //String [] substrs = str.split("[。?!?.!]"); for (int i=0;i<substrs.length;i++) { if (substrs[i].length()<MIN_THRESHOLD) { //語句小於要求的分割粒度 sb.append(substrs[i]); //sb.append("||"); if (sb.length()>MIN_THRESHOLD) { //System.out.println("A New TU: " + sb.toString()); list.add(sb.toString()); sb.delete(0, sb.length()); } } else { //語句滿足要求的分割粒度 if(sb.length()!=0) //此時如果快取有內容則應該先將快取存入再存substrs[i]的內容 以保證原文順序 { list.add(sb.toString()); //System.out.println("A New Tu:"+sb.toString()); sb.delete(0, sb.length()); } list.add(substrs[i]); //System.out.println("A New Tu:"+substrs[i]); } } } br.close(); isr.close(); //將分割好的tu放入List中以便傳入資料庫 for (Iterator i = list.iterator(); i.hasNext();){ System.out.println(i.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相關推薦
java 將英文文章 按句子,標點符號分割,正則表示式
package com.gao; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException
只能輸入英文數字和下劃線和橫線的正則表示式
var reg="^[A-Za-z0-9-_]+$" ; var regus = new RegExp(regs); regus.test("所要驗證的字串") true 符合 false 不符合 中英文
CCF URL對映 java 100分詳解 :巧妙地動態構造正則表示式
主要想法:將<int>替換成([0-9]+),將<str>替換成([^/]+),將<path>替換成(.+), 例如,/articles/<int>/<int>/<str>/ 替換之後就會變成/art
自定義控制元件-----自定義數字鍵盤,適配了正則表示式的帶輸出字串的控制元件
一、主要的類:CustomAmountInputKeyboard class CustomAmountInputKeyboard constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context,
Java學習筆記之Pattern類的用法詳解 (正則表示式)
Implements: Serializable 正則表示式的編譯表示形式。 指定為字串的正則表示式必須首先被編譯為此類的例項。然後,可將得到的模式用於建立 Matcher 物件,依照正則表示式,該物件可以與任意字元序列匹配。執行匹配所涉及的所有狀態都駐留在匹配器中,
js一些常用的校驗(工作中用的較多的,並附常用正則表示式)
做web的經常會遇到一些js校驗,比如身份證呀,手機號呀,郵箱呀等等,分享下我工作中遇到的這些,整理了下 /* * 校驗是否為空(null/空串) */ var checkNull = function(str){ if(str == null || str ==
Java正則表示式過濾、替換,將一段文字中的英語單詞分別提取出,並統計詞頻,按詞頻排序。
最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思
java將JSON字串轉換為實體類物件,基於net sf json實現
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
java 將學生列表資訊按照成績進行排序,並建立新的檔案儲存
1 張三1 18 男 88 1385551 2 張三 18 女 99 1385552 3 張三 18 男 88 1385553 4 李四1 19 男 66 1385554 5 李四 20 女 88 1385555 6 李四 19 男 66 1385556 7 王五 20 女
Java將list資料取出並加入分隔符拼接,轉換成String
方法一: public String listToString(List list, char separator) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.size(); i++
一種將英文文章字串每個單詞首字母轉成大寫字母的方法
import java.util.Arrays; public class newexercise3 {public static void main(String[] args) {String str =new String("If you were a teardro
Java將Map物件按字典序排列,並且封裝成URL的工具類
/** * * 方法用途: 對所有傳入引數按照欄位名的 ASCII 碼從小到大排序(字典序),並且生成url引數串<br> * 實現步驟: <br> * * @param paraMap 要排
正則表示式(模式器,匹配器)及java中的日期表示
正則表示式 正則表示式:用於匹配某些特定字串的一個規則。 沒有學會使用正則表示式的時候,我們遇到過這麼一個需求-----校驗使用者名稱是否合法? 具體要求如下: 1)使用者名稱長度必須在6到15之間 2)必須是字母數字組合 非正則具體實現如下 public clas
迴文判斷程式碼(可以忽略字串中的空格,標點符號),舉個例子啊,abcddcba就是一個迴文。a b cd,dc ba也是一個迴文。
#include<stdio.h> #include<string.h> #define N 100 int main() { char a[N]; char b[N]; int len; int j = 0;
Python 用正則表示式一次替換文章中所有特殊符號,如“-,$()#+&*”之類
一個簡單的正則表示式,可能會起大作用。比如說字符集就是這樣。一篇文章如果有各種亂碼,就可以用這種方法去除。如去除“-,$()#+&*”之類符號是很方便的。按照查詢、分割、替換的套路再做一做這樣的練習。今天晚了,後續還要操作檔案來完善這一點。 import re
Java清除標點符號的正則表示式
轉載請註明:http://www.pmjava.com/?thread-62961-1.html[java] view plain copy print?package com.test; publicclass StringTest { publicst
java驗證,”支援6-20個字母、數字、下劃線或減號,以字母開頭“這個的正則表示式怎麼寫?
轉自:https://yq.aliyun.com/wenzhang/show_96854 問題描述 java驗證,”支援6-20個字母、數字、下劃線或減號,以字母開頭“這個的正則表示式怎麼寫? 驗證”支援6-20個字母、數字、下劃線或減號,以字母開頭“的正則表示式
【傑瑞的專欄】架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗
傑瑞的專欄 架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗...
Java 表單註冊常用正則表示式驗證工具類,常用正則表示式大集合。 1. 電話號碼 2. 郵編 3. QQ 4. E-mail 5. 手機號碼 ……
/* Java 表單註冊常用正則表示式驗證工具類,常用正則表示式大集合。 1. 電話號碼 2. 郵編 3. QQ 4. E-mail 5. 手機號碼 6. URL 7. 是否為數字 8. 是否為中文 9. 身份證 10. 域名 11. IP*/ pack
java使用replaceAll的正則表示式替換,非常好用
package com.blog.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TEst { public static void main(St