正規表達式筆記:http://goo.gl/vcN8vs
正規表達式的判斷要用到下面兩個package
1
2
| import java.util.regex.Pattern;import java.util.regex.Matcher; |
Step1 . 你要配對的字串
1
| String s = new String("你要配對的字串"); |
Step2. 正規表達式
1
| Pattern p = Pattern.compile("你的正規表達式"); |
Step 3 . 開始配對
1
| Matcher m = p.matcher(s); |
Step4. methods的合併使用
1
2
3
| while(m.find()){ //如果在字串裡有找到關鍵字 System.out.println(s.substring(m.start(), m.end()));} |
Step5. 可搭配Map做字串搜尋,見Example2
以下兩個範例
Example 1 : 用正規表達式做是否為浮點數的判斷。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| import java.util.regex.*;public class Test1 { public static void main(String args[]){ String[] dataSet1 = {"1","1.1","1.0","0.1","1." ,".1","1e1","1.1e2","1.0e2","0.1e9","1.e6",".1e0"}; String[] dataSet2 = {"..1..","1...2e","e","2e","e2"}; Pattern pattern = Pattern.compile ("^(([0-9]+\\.?[0-9]*)|([0-9]*\\.?[0-9]+))(e?[0-9]+)?$"); for (int i = 0; i < dataSet1.length; i++) { Matcher matcher1 = pattern.matcher(dataSet1[i]); if(matcher1.find()) System.out.println(dataSet1[i]+": true"); else System.out.println(dataSet1[i]+": false"); } for (int i = 0; i < dataSet2.length; i++) { Matcher matcher2 = pattern.matcher(dataSet2[i]); if(matcher2.find()) System.out.println(dataSet2[i]+": true"); else System.out.println(dataSet2[i]+": false"); } }} |
Example 2:利用正規表達式和HashMap,做一篇文章中不同單字的統計,且利用ArrayList做降冪排列輸出
HashMap傳送門:http://goo.gl/P7771uArrayList傳送門:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String args[]){ String s ="Jane Cobden (1851–1947) was a British Liberal politician " + "and radical activist. An early proponent of women rights, " + "she was one of two women elected to the inaugural London " + "County Council in 1889, although legal challenges prevented " + "her from being a councillor. Throughout her life she sought " + "to protect and develop the legacy of her father, the " + "Victorian reformer Richard Cobden, in particular the causes " + "of land reform, peace, social justice and women suffrage. " + "She was also a consistent advocate for Irish independence. " + "In the she extended her interests to advancing the rights " + "of the indigenous populations within colonial territories. " + "She opposed the Boer War of 1899–1902, and after the " + "establishment of the Union of South Africa in 1910 she " + "attacked its segregationist policies. Before the First World" + " War she spoke out against Joseph Chamberlain tariff reform " + "crusade on the grounds of her father free trade principles, " + "and was prominent in the Liberal Party revival of the land " + "reform issue. In 1928 she presented the old Cobden family " + "residence, Dunford House, to the Cobden Memorial Association " + "as a centre dedicated to the issues and causes that had defined " + "\"Cobdenism”."; Pattern pattern = Pattern.compile("[a-zA-Z]+"); Matcher matcher = pattern.matcher(s); /**宣告HashMap*/ HashMap<string, integer=""> hashMap = new HashMap<string, integer="">(); String sub; int count = 0; while (matcher.find()) { sub = s.substring(matcher.start(),matcher.end()); if(hashMap.get(sub)==null){ //如果HashMap裡沒有這個單字 hashMap.put(sub, 1); //將此單字加入HashMap,數量為1 count++; } else hashMap.put(sub, hashMap.get(sub)+1);//如果有此單字,將數量+1 } System.out.println("Total: "+count+" words."); /**利用ArrayList做HashMap Sort*/ List<map.entry<string, integer="">> list = new ArrayList<map.entry<string,integer>>(hashMap.entrySet()); Collections.sort(list,new Comparator<map.entry<string, integer="">>() { @Override public int compare(Map.Entry<string, integer=""> entry1, Map.Entry<string, integer=""> entry2) { return (entry2.getValue()-entry1.getValue()); } }); for (Map.Entry<string, integer=""> entry:list){ System.out.print(entry.getKey()+" : "+hashMap.get(entry.getKey())+"\t"); } }} |