一个正则表达式就是由普通字符(例如大小写字母)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"java"中没有包含任何元字符,它可以匹配"java"和"javascript"等字符串,但是不能匹配"Java"。
正则表达式不仅能进行字符串的匹配,还能进行字符串的提取、替换。
示例代码:
String regEx = ".+/(.+)$"
String str = "D:/java/test.txt"
Pattern p = Pattern.compile(regEx)
Matcher m = p.matcher(str)
if (!m.find()){
System.out.println("文件路径格式错误!")
return
}
System.out.println(m.group(1))
运行结果:test.txt
正则表达式“.+/(.+)$”的含义就是:被匹配的字符串以任意字符序列开始,后边紧跟着字符“/”,最后以任意字符序列结尾,“()”代表分组操作,这里就是把文件名做为分组,匹配完毕就可以通过Matcher 类的group方法取到所定义的分组了。需要注意的这里的分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。
按照你的要求给出的Java正则表达式的例子如下
//下面这个正则表达式匹配不能以.css,.html,.js,.json或者.xml结尾的字符串import java.util.regex.Matcher
import java.util.regex.Pattern
public class CC {
public static void main(String[] args) {
String s="xxxx.js.jss"//目标字符串
String regex="((?!\\.((css)|(html)|(js)|(json)|(xml))$).)+"//正则表达式
Pattern p=Pattern.compile(regex)
Matcher m=p.matcher(s)
if(m.matches()){
System.out.println("匹配")
}else{
System.out.println("不匹配")
}
}
}
运行结果
匹配