-
Notifications
You must be signed in to change notification settings - Fork 0
/
RegExUtil.java
201 lines (190 loc) · 4.63 KB
/
RegExUtil.java
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
package com.gootrip.util;
import java.util.*;
import java.util.regex.*;
/**
* 这是个正则表达式应用类,用来匹配和替换字串用的
* @author
* @version
*/
public class RegExUtil {
/**
* 要求大小写都匹配正则表达式
* @param pattern 正则表达式模式
* @param str 要匹配的字串
* @return boolean值
* @since 1.0
*/
public static final boolean ereg(String pattern, String str) throws PatternSyntaxException
{
try
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
return m.find();
}
catch (PatternSyntaxException e)
{
throw e;
}
}
/**
* 匹配且替换字串
* @param pattern 正则表达式模式
* @param newstr 要替换匹配到的新字串
* @param str 原始字串
* @return 匹配后的字符串
* @since 1.0
*/
public static final String ereg_replace(String pattern, String newstr, String str) throws PatternSyntaxException
{
try
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
return m.replaceAll(newstr);
}
catch (PatternSyntaxException e)
{
throw e;
}
}
/**
* 主要用于模板中模块标记分析函数 把查找到的元素加到vector中
* @param pattern为正则表达式模式
* @param str 原始字串
* @return vector
* @since 1.0
*/
public static final Vector splitTags2Vector(String pattern, String str) throws PatternSyntaxException
{
Vector vector = new Vector();
try {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
while (m.find())
{
vector.add(ereg_replace("(\\[\\#)|(\\#\\])", "", m.group()));
}
return vector;
}
catch (PatternSyntaxException e) {
throw e;
}
}
/**
* 模块标记分析函数
* 功能主要是把查找到的元素加到vector中
* @param pattern为正则表达式模式
* @param str 原始字串
* @since 1.0
*/
public static final String[] splitTags(String pattern, String str)
{
try {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
String[] array = new String[m.groupCount()];
int i = 0;
while (m.find())
{
array[i] = ereg_replace("(\\[\\#)|(\\#\\])", "", m.group());
i++;
}
return array;
}
catch (PatternSyntaxException e) {
throw e;
}
}
/**
* 匹配所有符合模式要求的字串并加到矢量vector数组中
* @param pattern为正则表达式模式
* @param str 原始字串
* @return vector
* @since 1.0
*/
public static final Vector regMatchAll2Vector(String pattern, String str) throws PatternSyntaxException
{
Vector vector = new Vector();
try
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
while (m.find())
{
vector.add(m.group());
}
return vector;
}
catch (PatternSyntaxException e)
{
throw e;
}
}
/**
* 匹配所有符合模式要求的字串并加到字符串数组中
* @param pattern为正则表达式模式
* @param str 原始字串
* @return array
* @since 1.0
*/
public static final String[] regMatchAll2Array(String pattern, String str) throws PatternSyntaxException
{
try
{
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
String[] array = new String[m.groupCount()];
int i = 0;
while (m.find())
{
array[i] = m.group();
i++;
}
return array;
}
catch (PatternSyntaxException e)
{
throw e;
}
}
/**
* 转义正则表达式字符(之所以需要将\和$字符用escapeDollarBackslash方法的方式是因为用repalceAll是不行的,简单的试试"$".repalceAll("\\$","\\\\$")你会发现这个调用会导致数组越界错误)
* @param pattern为正则表达式模式
* @param str 原始字串
* @return array
* @since 1.0
*/
public static String escapeDollarBackslash(String original) {
StringBuffer buffer=new StringBuffer(original.length());
for (int i=0;i<original.length();i++) {
char c=original.charAt(i);
if (c=='\\'||c=='$') {
buffer.append("\\").append(c);
} else{
buffer.append(c);
}
}
return buffer.toString();
}
/**
* 提取指定字串的函数
* 功能主要是把查找到的元素
* @param pattern为正则表达式模式
* @param str 原始字串
* @since 1.0
*/
public static final String fetchStr(String pattern, String str) {
String returnValue = null;
try {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
while (m.find()) {
returnValue = m.group();
}
return returnValue;
} catch (PatternSyntaxException e) {
return returnValue;
}
}
}