如果我们想根据特定的模式表示一组字符串,那么我们应该使用正则表达式。
例如,我们可以编写一个正则表达式来表示所有有效的电子邮件地址,或者我们可以编写一个正则表达式来验证有效的电话号码等。
使用正则表达式的最重要的应用领域是:
要在Java中使用正则表达式,我们可以利用java.util.regex包,该包包括以下类:
这里是一个正则表达式的示例代码片段:
import java.util.regex.*;
public class RegularExpression {
public static void main(String[] args) {
int count = 0;
Pattern pattern = Pattern.compile("ab");
Matcher matcher = pattern.matcher("abcbcbcababacb");
while (matcher.find()) {
++count;
System.out.println(matcher.group()+ "...... found at: "+matcher.start());
}
System.out.println("The Total number of occurrence is " + count);
}
}
/****
Output-
ab...... found at: 0
ab...... found at: 7
ab...... found at: 9
The Total number of occurrence is 3
****/
Pattern是一个已编译的正则表达式,即Java中的模式等价物。我们可以使用Pattern类的compile()方法创建一个模式对象。Pattern类的compile()方法的签名如下:
Flags——compile()方法中的标志会改变搜索的方式。以下是其中几个:
public static Pattern compile(String regex)
以下是Pattern类compile()方法的一个示例:
Pattern pattern = Pattern.compile("ab");
matcher对象可用于检查目标字符串中的指定模式。使用Pattern类的matcher()方法,我们可以生成一个匹配器对象。Pattern类的matcher()方法具有以下签名:
public Matcher matcher(CharSequence input)
以下是Pattern类matcher()方法的示例:
Matcher matcher = pattern.matcher("abcbcbcababacb");
Matcher类存在于java.util.regex包中。以下是Matcher类一些最重要的方法:
注意:Pattern和Matcher类存在于java.util.regex包中,从java1.4v开始引入。
我们可以使用量词符指定要匹配的出现次数。
要根据特定的模式拆分目标字符串,我们可以使用Pattern类的split()方法。Pattern类的split()方法具有以下签名:
public String[] split(CharSequence input)
为了方便,我在这里包含了Pattern类split()方法的代码片段:
public class RegularExpression {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\\s");
String[] splitString = pattern.split("Pattern class is present in java.util.regex");
for (String text : splitString) {
System.out.println(text);
}
}
}
/***
Output -
Pattern
class
is
present
in
java.util.regex
***/
在上面的示例中,根据空格(\s)分割了字符串。
String类也包含split()方法。字符串类的split()方法用于根据特定模式拆分目标字符串。
public class RegularExpression {
public static void main(String[] args) {
String text = "This is example of String class split() method";
String[] strings = text.split("\\s");
for (String s : strings) {
System.out.println(s);
}
}
}
/***
Output
This
is
example
of
String
class
split()
method
***/
在上面的例子中,字符串是根据空白(\s)来划分的。
注意:Pattern类的split()方法可以接受一个目标字符串作为参数,而String类的split()方法可以接受一个正则表达式作为参数。
StringTokenizer是专门用于标记化任务的类。Java.util包中有一个StringTokenizer类。
public class StringTokenizerDemo {
public static void main(String[] args) {
StringTokenizer tokenizer = new StringTokenizer("StringTokenizer class present in java.util package");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
}
}
/***
Output -
StringTokenizer
class
present
in
java.util
package
***/
注意:StringTokenizer的默认正则表达式为空格符(\s)。
我们也可以根据需要传递正则表达式,以下是代码片段有助于你更好地理解:
StringTokenizer tokenizer = new StringTokenizer("05-21-2023","-");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
/***
Output
05
21
2023
***/
我列了一些常用的编程正则表达式:
名称栏目:一文搞懂Java正则表达式
文章转载:http://www.shufengxianlan.com/qtweb/news42/430942.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联