最近項(xiàng)目開(kāi)發(fā)中對(duì)excel操作比較頻繁,并結(jié)合正則表達(dá)式進(jìn)行了一些處理,整理一下. 1.正則表達(dá)式常用方法
/** * 在第一個(gè)字符串中查找匹配字符串的個(gè)數(shù) * @param str * @param regexStr * @return */ public static int count(String str,String regexStr){ int count = 0; Pattern pt = Pattern.compile(regexStr); Matcher m = pt.matcher(str); int start = 0; while(m.find()){ count++; str = str.replaceFirst(regexStr, ""); } return count; } /** * 根據(jù)正則表達(dá)式分割str字符串成為一個(gè)一個(gè)的小的單元! * (實(shí)際使用:在一個(gè)類似語(yǔ)法分析的模塊中發(fā)揮重要作用) * 例如:3+5*4 根據(jù)正則表達(dá)式+-\* 分割成數(shù)組 3,+,5,*,4 * @param str * @param regexStr * @return */ public static List splitByStr(String str,String regexStr){ List temp = new ArrayList(); Pattern pt = Pattern.compile(regexStr); Matcher m = pt.matcher(str); int start = 0; while(m.find()){ //去掉下面的字符串中為空串的情況! if(m.start()!=start) temp.add(str.substring(start, m.start())); temp.add(str.substring(m.start(),m.end())); start = m.end(); } temp.add(str.substring(start)); return temp; } /** * 檢查是否含有指定的正則表達(dá)式匹配的子串. * @param str 目標(biāo)字符串 * @param regex 正則表達(dá)式,如果正則表達(dá)式含有"^......$"就是查找整個(gè)字符串對(duì)象是否符合正則表達(dá)式. * @return */ public static boolean checkInclude(String str,String regex){ Pattern pattern = Pattern.compile(regex); Matcher matcher = null; matcher = pattern.matcher(str); return matcher.find(); } /** * 方法字符串中符合正則表達(dá)式的子串的集合. * @param str * @param regex * @return */ public static List getRightSubStr(String str, String regex) { List ans = new ArrayList(); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); while (matcher.find()) { //注意要下面的goup()函數(shù)中可以含有數(shù)字,表示查找得到正則表達(dá)式中的goup匹配串. ans.add(matcher.group()); System.out.println("找到匹配的字符串 \"" + matcher.group() + "\" 開(kāi)始于 " + matcher.start() + " 結(jié)束于 " + matcher.end() + "."); } return ans; } 下面是java正則表達(dá)式經(jīng)常使用的一些方法和說(shuō)明:
(1)使用matches方法快速建設(shè)是否表示給定的輸入字符串:Pattern.matches("\\d","1")返回true (2)split(string)使用方法:Pattern.compile(":").split("one:two:three:four:five"); 返回:解析出“one two three four five”單詞 再比如使用數(shù)字作為一個(gè)分割字符串的方法:(注意下面的\\d不是正則表達(dá)式,而是前面加了一個(gè)轉(zhuǎn)義符號(hào)\) Pattern.compile("\\d").split("one9two4three7four1five");也返回相同的結(jié)果。。 (3)在String類中有的幾個(gè)與Pattern類似的方法: public boolean matches(String regex): public String[] split(String regex, int limit): public String[] split(String regex): public String replace(CharSequence target,CharSequence replacement): (4) Matcher 類中其他一些有用的方法 索引方法 索引方法(index methods)提供了一些正好在輸入字符串中發(fā)現(xiàn)匹配的索引值: public int start():返回之前匹配的開(kāi)始索引。 public int start(int group):返回之前匹配操作中通過(guò)給定組所捕獲序列的開(kāi)始索引。 public int end(): 返回最后匹配字符后的偏移量。 public int end(int group): 返回之前匹配操作中通過(guò)給定組所捕獲序列的最后字符之后的偏移量。 研究方法 研究方法(study methods)回顧輸入的字符串,并且返回一個(gè)用于指示是否找到模式的布爾值。 public boolean lookingAt(): 嘗試從區(qū)域開(kāi)頭處開(kāi)始,輸入序列與該模式匹配。 public boolean find(): 嘗試地尋找輸入序列中,匹配模式的下一個(gè)子序列。 public boolean find(int start): 重置匹配器,然后從指定的索引處開(kāi)始,嘗試地尋找輸入序列中,匹配模式的下一個(gè)子序列。 public boolean matches(): 嘗試將整個(gè)區(qū)域與模式進(jìn)行匹配 替換方法 替換方法(replacement methods)用于在輸入的字符串中替換文本有用處的方法。 public Matcher appendReplacement(StringBuffer sb, String replacement):實(shí)現(xiàn)非結(jié)尾處的增加和替換操作。 public StringBuffer appendTail(StringBuffer sb):實(shí)現(xiàn)結(jié)尾處的增加和替換操作。 public String replaceAll(String replacement):使用給定的替換字符串來(lái)替換輸入序列中匹配模式的每一個(gè)子序列。 public String replaceFirst(String replacement):使用給定的替換字符串來(lái)替換輸入序列中匹配模式的第一個(gè)子序列。 public static String quoteReplacement(String s):返回指定字符串的字面值來(lái)替換字符串。這個(gè)方法會(huì)生成一個(gè)字符串,用作 Matcher 的 appendReplacement 方法中的字面值替換 s。所產(chǎn)生的字符串將與作為字面值序列的 s 中的字符序列匹配。斜線(\)和美元符號(hào)($)將不再有特殊意義了。 正則表達(dá)式基礎(chǔ):
2.使用jxl進(jìn)行exlce的基本操作 下面基礎(chǔ)代碼來(lái)自于網(wǎng)絡(luò):
|