正则表达式是一种字符串匹配的模式,它可以判断一个字符串是否为指定的格式,可以用于替换目标字符串,也可以从一段文本中提取出符合模式的子串的集合,本人为新手最近刚刚接触正则表达式,于此记录。
本文使用java语言进行编写
精确匹配
下面以regex表示你的模式串
使用“^regex”来判断目标文本是否以当前模式串为开头,若是则返回第一个符合regex的子串
使用“regex$”来判断文本是否以regex为结尾,若是则返回结尾的子串
需要注意的是:精确模式只能匹配到第一个符合模式串的子串,即返回的结果有且仅有一个。当“^”与“$”连用时,将会对目标文本进行整体的精确匹配
如果你想忽略大小写,可以使用Pattern.compile(“regex”,Pattern.CASE_INSENSITIVE),在本文中暂不演示(有空更新)
代码示例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexMatches{
public static void main(String[] args){
String text = "Today is a lovely day";
String regex = "^[a-z]+$";
Pattern pattern = Pattern.complie(regex); //此处判断文本是否为任意大于1长度(+号表示任意扩展,等价于{1,})由小写字母构成的字符串
Matcher matcher = pattern.matcher(text); //设定匹配文本
//匹配成功,输出匹配结果
if(matcher.matches()){
System.out.println(matcher.matches());
}else{
System.out.println("God Not Find!");
}
}
}
输出结果
God Not Find!
因为text文本中含有空格,且开头字母大写,所以匹配结果为空,若将text改为
String text = “today is a lovely day”
再进行匹配,返回结果仍为God Not Find!因为text中还含有空格
在text已更变的情况下继续构造regex为"^[a-z]",则返回结果为
today
而如果构造regex为"[a-z]$",则返回结果为
day
通过这些测试我们大概就能推断正则精确匹配模式的使用情况基本上是判断目标文本是否符合某种特定的格式,比如邮箱、网址的匹配等
全局模式
在实际使用过程中,我们当然想要将文本中所有对应模式串的结果都获取到,因此可以采用正则表达式的全局模式来解决这个问题
全局模式即模式串不包含“^”与"$"
代码示例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
public static void main(String args[]) {
String text = "Today is a lovely day";
String pattern = "[a-z]+";
Pattern pattern = Pattern.compile(pattern);
Matcher matcher = r.matcher(str);
//find方法匹配成功后,会从匹配成功子串后面第一个字符开始匹配,因此可以匹配所有出现的子串
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
上述代码将会产生以下结果:
oday
is
a
lovely
day
由此我们获得了文本中所有匹配模式串的子串,注意Today中的"T"并没有被提取
至于如何将匹配的子串替换为其它的文本,下次我再做出更新
到这里文章就结束了,希望各位喜欢=^=