apache的Jakarta
ORO庫 的正則表達式的使用
附件是代碼和相關文件
package regularexpressiontest
Jakarta_ORO;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c)
</p>
* <p>Company: </p>
* @author wdz :
* @version
*/
import org
apache
oro
io
*;
import org
apache
oro
text
regex
*;
public class Jakarta_OROTest
{
public Jakarta_OROTest
() {
System
out
println(
aaa
hhksjds找出第一個數字串
);
containMatch(
aaa
hhksjds
\\d+
);
System
out
println(
從
$xaaa
hhksjds 找出第一個[a
z]{
}[
]{
}
);
containMatch(
$xaaa
hhksjds
[a
z]{
}[
]{
}
);
System
out
println(
從 Catlog catherone cat cat
catlog catherone 找出第一個cat[a
z]*\\s+
);
preMatch(
Catlog catherone cat cat
catlog catherone
cat[a
z]*\\s+
);
////找出第一個t*n
System
out
println(
ten tig找出第一個t*n
);
containMatch(
ten tig
[a
z]{
}
[a
z]{
}
);
System
out
println(
獲得年月日
);
getDateString();
// 找出所有 car*的單詞
單詞分割符號是空格符號或者逗號
System
out
println(
找出所有 car*的單詞
單詞分割符號是空格符號或者逗號
);
cycleMatch(
Catlog catherone cat cat
catlog catlog
catherone
((cat\\w*))\\s+
);
//找出所有的 擴號內的內容
//使用 (( 和))配對使用可以進行分組
System
out
println(
找出所有的 擴號內的內容
);
cycleMatch(
Cuid=
(guest) gid=
(others) groups=
(users)
(floppy)
[(]{
}((\\w*))[)]{
}
);
//找出所有的日期字符串得月份
//使用 (( 和))配對使用可以進行分組
System
out
println(
找出所有的日期字符串的月份
);
cycleMatch(
July
bbb
dfg*fg October
(([a
z]{
}))\\s[
]{
}
[\\s]?[
]{
}
);
//找出所有的 t*n
System
out
println(
找出所有的 [a|e|i|o|n]{
}n
);
cycleMatch(
tan ten tin tonn toon
t[a|e|i|o|n]{
}n
);
//找出所有的 t*n
//
用於站位
想當於文件查找得?符號
System
out
println(
找出所有的 t*n
);
cycleMatch(
tan ten tin
tonn toon
((t
n))[\\s|
]?
);
//
和
形式的社會安全號碼
System
out
println(
和
形式的社會安全號碼
);
cycleMatch(
t
n toon
\\d{
}\\
?\\d{
}\\
?\\d{
}
);
//電話號碼
System
out
println(
電話號碼
);
cycleMatch(
t
n toon
\\d{
}\\
?\\d{
}
);
//ip列表
System
out
prin猀??獡????у耈ф?慰檔????擴牥慮整?傳??????????????????????????????????????????佄???偁??????????????侰?????????偁????????????楈敢湲瑡???????????????????佄??????????????????楈敢湲瑡?????????????????俄????擴牥慮整?????????????????????佄?溜????????????????楈敢湲瑡??????????????????????楈敢湲瑡??????????????????????????????????????????????????????????????????擴牥慮整?????????????楈敢湲瑡???????????????????????????????????????????????????????癡湩??????????????擴牥慮整????????楈敢湲瑡???????????????????擴牥慮整????????????????????????????????????????????擴牥慮整??????????????????????????????????????????????????????????溜??????????????楈敢湲瑡??????????????????擴牥慮整?????????六???????????????楈敢湲瑡???????????????????????????????????????????擴牥慮整???????????????????????????????????????????????????????????????擴牥慮整??????瑨灴?栯擴牥慮整昮湡慫?潣???????擴牥慮整???????????a???tln(
ip list
獲得ip列表
);
cycleMatch(
ip list
\\d{
}\\
\\d{
}\\
\\d{
}\\
\\d{
}
);
}
/***
*
* 獲得年月日
* 例如
June
* */
private void getDateString() {
System
out
println(
獲得年月日
從dsds June
ksdjks 找出第一個日期
);
containMatch(
dsds June
ksdjks
[a
z]+\\s[
]{
}
\\s[
]{
}
);
System
out
println(
獲得年月日
從June
asdsds June
ksdjks 找出第一個日期
);
containMatch(
June
asdsds June
ksdjks
[\\s]?[a
z]+\\s[
]{
}
\\s[
]{
}
);
}
/***
* 前綴方式的匹配
* @param inputValue 被匹配查找得對想
* @param reg 匹配規則
* **/
private void preMatch(String inputValue
String reg) {
PatternCompiler compiler = new Perl
Compiler();
PatternMatcher matcher = null;
Pattern pattern = null;
String input = inputValue;
String regexp = reg;
try {
pattern = pile(regexp
Perl
Compiler
CASE_INSENSITIVE_MASK);
matcher = new Perl
Matcher();
if (matcher
matchesPrefix(input
pattern)) {
MatchResult result = matcher
getMatch();
System
out
println(
result =
+ result
group(
));
//System
out
println(
result =
+result
group(
));
}
}
catch (MalformedPatternException e) {
System
err
println(
preMatch
Bad pattern
);
System
err
println(e
getMessage());
System
exit(
);
}
}
/***
* 包含方式的匹配
* @param inputValue 被匹配查找得對想
* @param reg 匹配規則
* **/
private void containMatch(String inputValue
String reg) {
// System
out
println(
containMatch
);
PatternCompiler compiler = new Perl
Compiler();
PatternMatcher matcher = null;
Pattern pattern = null;
String input = inputValue;
String regexp = reg;
try {
pattern = pile(regexp
Perl
Compiler
CASE_INSENSITIVE_MASK);
matcher = new Perl
Matcher();
if (ntains(input
pattern)) {
MatchResult result = matcher
getMatch();
System
out
println(
result =
+ result
group(
));
// System
out
println(
result =
+result
group(
));
}
}
catch (MalformedPatternException e) {
System
err
println(
containMatch
Bad pattern
);猀??獡????
System
err
println(e
getMessage());
System
exit(
);
}
}
/***
* 循環方式的匹配
* 使用 (( 和))配對使用可以進行分組
* @param inputValue 被匹配查找得對想
* @param reg 匹配規則
* **/
private void cycleMatch(String inputValue
String reg
final int groupid){
org
apache
oro
text
regex
PatternCompiler compile = new Perl
Compiler();
try {
Pattern p = pile(reg
Perl
Compiler
CASE_INSENSITIVE_MASK);
PatternMatcherInput input = new PatternMatcherInput(inputValue);
org
apache
oro
text
regex
Perl
Matcher pm = new Perl
Matcher();
MatchResult result =null;
int i=
;
while(ntains(input
p)){
result = pm
getMatch();
System
out
println(
result =
+ result
group(groupid));
input
setBeginOffset(result
length());
i++;
}
System
out
println(
總共匹配
+i+
次
);
}
catch (Exception ex) {
System
err
println(
循環方式的匹配發生錯誤
+ex
getMessage());
}
}
public static void main(String[] args) {
Jakarta_OROTest
jakarta_OROTest
= new Jakarta_OROTest
();
}
}
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28214.html