正则表达式示例:
string text=' tytufvbnhjk ' ' kiegurf http://www.Baidu.com '; String pattern='.*http://.* '; //包含此字符串的boolean matches=pattern.matches (pattern,text ); //判断在字符串中是否包含http://system.out.println (' matches=' matches ); java.util.regex包主要由以下三个类组成
pattern类-模式对象是正则表达式的编译表示。 Pattern类不提供公共构造函数。 若要创建架构,必须首先调用其publicstaticcompile ()方法之一,然后才能返回Pattern对象。 这些方法接受正则表达式作为第一个参数。
Matcher类- Matcher对象是解释模式并对输入字符串执行匹配操作的引擎。 与Pattern类一样,Matcher没有定义公共构造函数。 在Pattern对象上调用matcher ()方法以获取matcher对象。
patternsyntaxexception-patternsyntaxexception对象是指示正则表达式模式语法错误的未检查异常。
SubexpressionMatches^匹配行的开头$匹配行的末尾[…]匹配括号中的任意一个字符[^…]匹配括号中的任意一个字符A整个匹配字符串的开头z匹配字符串的末尾(如果有换行符),在换行符之前匹配。 re*与上一个表达式匹配的零个或多个re是否与与上一个表达式匹配的一个或多个re匹配? 上式0次或1次re{n}一致式的n次re{n,}一致上式的n次以上的re{n,m}一致上式的至少n次或最大m次的A | b一致a或bW一致字母字符w一致字母字符以外的字符s一致空白re )匹配独立模式而不回溯,G匹配字符串中的最后一个字符,b在括号外部与单词边界匹配。 在括号中匹配反斜杠B匹配非字符边界n、t、匹配etc换行符、换行符、制表符等Q以开始引用E结束引用Q开头的####方法
#####matches和lookingAt方法都试图将输入数据与patter匹配,但matches必须匹配整个字符串,而不需要lookingAt。
例如:
import java.util.regex.Matcher; import java.util.regex.Pattern; publicclassregexmatches { privatestaticfinalstringregex=' foo '; privatestaticfinalstringinput=' foooooooooooooooo '; private static Pattern pattern; 私有状态匹配器; publicstaticvoidmain (string args [ ] ) pattern=pattern.compile(regex ); matcher=pattern.matcher(input ); system.out.println (' currentregexis : ' regex ); system.out.println (currentinputis : ) input ); system.out.println('lookingat ) ) : ' matcher.lookingAt ); system.out.println('Matches ) (: ' matcher.matches ) ); }结果
#####replaceFirst和replaceAll方法
两者的共同点是置换正则一致的文本,而replaceFirst是置换一致的第一个项目,replaceAll是置换一致的所有项目
例如:
import java.util.regex.Matcher; import java.util.regex.Pattern; publicclassregexmatches { privatestaticstringregex=' dog '; privatestaticstringinput=' thedogsaysmeow.' ' alldogssaymeow.'; privatestaticstringreplace=' cat '; publicstaticvoidmain (string [ ] args ) patternp=pattern.compile ) regex; //get a matcher object Matcher m=
p.matcher(INPUT); INPUT = m.replaceAll(REPLACE); System.out.println(INPUT); }}结果:
#####Pattern.compile()
如果需要匹配一个正则表达式在文本中多次出现,需要通过Pattern.compile() 方法创建一个Pattern对象
例:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexMatches { public static void main( String args[] ) { String text = "This is the text to be searched " + "for occurrences of the http:// pattern."; String patternString = ".*http://.*"; Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(text); boolean matches = matcher.matches(); System.out.println("matches = " + matches); }}结果
#####split
通过制定字符将字符串分割
例:
结果
####find() + start() + end()
find() 方法用于在文本中查找出现的正则表达式,文本是创建Matcher时,通过 Pattern.matcher(text) 方法传入的。如果在文本中多次匹配,find() 方法返回第一个,之后每次调用 find() 都会返回下一个。
start() 和 end() 返回每次匹配的字串在整个文本中的开始和结束位置。实际上, end() 返回的是字符串末尾的后一位,这样,可以在把 start() 和 end() 的返回值直接用在String.substring() 里。
结果
found: 1 : 2 - 4found: 2 : 5 - 7found: 3 : 23 - 25found: 4 : 70 - 72#####reset()
reset() 方法会重置Matcher 内部的 匹配状态。当find() 方法开始匹配时,Matcher 内部会记录截至当前查找的距离。调用 reset() 会重新从文本开头查找。
也可以调用 reset(CharSequence) 方法. 这个方法重置Matcher,同时把一个新的字符串作为参数传入,用于代替创建 Matcher 的原始字符串。
#####group()