首页 > 编程知识 正文

java正则表达式任意字符,正则表达式代码

时间:2023-05-06 09:09:43 阅读:173391 作者:3885

正则表达式示例:

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对象

Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE); //Pattern.CASE_INSENSITIVE 忽略大小写

例:

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
通过制定字符将字符串分割
例:

import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexMatches { public static void main( String args[] ) { String text = "A sep Text sep With sep Many sep Separators"; String patternString = "sep"; Pattern pattern = Pattern.compile(patternString); String[] split = pattern.split(text); System.out.println("split.length = " + split.length); for(String element : split){ System.out.println("element = " + element); } }}

结果

####find() + start() + end()
find() 方法用于在文本中查找出现的正则表达式,文本是创建Matcher时,通过 Pattern.matcher(text) 方法传入的。如果在文本中多次匹配,find() 方法返回第一个,之后每次调用 find() 都会返回下一个。
start() 和 end() 返回每次匹配的字串在整个文本中的开始和结束位置。实际上, end() 返回的是字符串末尾的后一位,这样,可以在把 start() 和 end() 的返回值直接用在String.substring() 里。

String text = "This is the text which is to be searched " + "for occurrences of the word 'is'.";String patternString = "is";Pattern pattern = Pattern.compile(patternString);Matcher matcher = pattern.matcher(text);int count = 0;while(matcher.find()) { count++; System.out.println("found: " + count + " : " + matcher.start() + " - " + matcher.end());}

结果

found: 1 : 2 - 4found: 2 : 5 - 7found: 3 : 23 - 25found: 4 : 70 - 72

#####reset()
reset() 方法会重置Matcher 内部的 匹配状态。当find() 方法开始匹配时,Matcher 内部会记录截至当前查找的距离。调用 reset() 会重新从文本开头查找。
也可以调用 reset(CharSequence) 方法. 这个方法重置Matcher,同时把一个新的字符串作为参数传入,用于代替创建 Matcher 的原始字符串。
#####group()

假设想在一个文本中查找URL链接,并且想把找到的链接提取出来。当然可以通过 start()和 end()方法完成。但是用group()方法更容易些。分组在正则表达式中用括号表示,例如:(John)此正则表达式匹配John, 括号不属于要匹配的文本。括号定义了一个分组。当正则表达式匹配到文本后,可以访问分组内的部分。使用group(int groupNo) 方法访问一个分组。一个正则表达式可以有多个分组。每个分组由一对括号标记。想要访问正则表达式中某分组匹配的文本,可以把分组编号传入 group(int groupNo)方法。group(0) 表示整个正则表达式,要获得一个有括号标记的分组,分组编号应该从1开始计算。 贪婪模式饥饿模式独占模式X?X??X?+匹配0或1次X*X*?X*+匹配0次或多次X+X+?X++匹配1次或多次X{n}X{n}?X{n}+匹配n次X{n,}X{n,}?X{n,}+匹配至少n次X{n,m}X{n,m}?X{n,m}+匹配至少n次,最多m次

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。