java.util.regex中的pattern 和 matcher的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.util.regex中的pattern 和 matcher的用法相关的知识,希望对你有一定的参考价值。

求 一个 pattern 来match 2种 loop, 一个是 for loop 符合的pattern的形式是

for (- ; - ; -)

还一个是while loop 要求的pattern是

while (- Boolean operator -) (里面要求是逻辑算子)

想用这个方法 去寻找 有几个 for 和while loop 在一个 文档中

还有一个问题就是 如何去计算 有几个单词 在一个string里面

例如"All Rights Reserved" 有3个单词, 只要是没有空格并且连续的字母后面可以跟符号或者是空格 都算是一个单词

Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。用法如下:

(字符串:"abc",正则表达式: "[a-z]3") 
 String类的方法:
 boolean  b  = "abc".matches("[a-z]3" 
System.out.println(b);                
Pattern类中的方法:
 boolean  b  = Pattern.matches("[a-z]3","abc"); 
System.out.println(b);               
 Matcher类中的方法:
 Pattern p = Pattern.compile("[a-z]3"); 
Matcher m = p.matcher("acc"); 
boolean  b  =m.matches() 
System.out.println(b);                                     
 得到的结果都为true。
参考技术A Pattern
par
=
Pattern.compile("[0-1]*");
String
str1
=
"101010101010101001010101";
String
str2
=
"012000120120120";
Matcher
macher
=
par.matcher(str1);
System.out.println(macher.matches());
macher
=
par.matcher(str2);
System.out.println(macher.matches());

是用来比对正则表达式的
我的正则表达式是1和0可以出现1次或者N次

第一个肯定是正确的
第二个肯定是不正确的
参考技术B 正则表达式的东西自己看看api就行了 参考技术C Pattern p1 = Pattern.compile("for\\([^;]+;[^;]+;[^;]+\\)");
Pattern p2 = Pattern.compile("while\\([^\\)]+\\)");

public int find(String string)
int num = 0, index = 0, state = 1;
String word = "[a-zA-Z]";
char[] c = string.toCharArray();
while (index < c.length)
switch (state)
case 1:
if (String.valueOf(c[index]).matches(word))
state = 2;
num++;

break;
case 2:
if (!String.valueOf(c[index]).matches(word))
state = 1;

break;

index++;

return num;
本回答被提问者采纳
参考技术D 正好要用这个,看看.

以上是关于java.util.regex中的pattern 和 matcher的用法的主要内容,如果未能解决你的问题,请参考以下文章

java.util.regex - Pattern.compile() 的重要性?

RE validation in Java EE(java.util.regex.Pattern)

RE validation in Java EE(java.util.regex.Pattern)

如何使用protobuf序列化java.util.regex.Pattern?

正则表达式变得疯狂:java.util.regex.Pattern 匹配器进入高 CPU 循环

Java.util.regex中matcher 和pattern的用法