java正则表达式complie,java正则表达式使用
JAVA正则表达式 Pattern.compile(regex, flags)中flags能取多个值吗
可以
Pattern.compile(regex, CASE_INSENSITIVE | DOTALL);
多个值 罗辑或
java正则表达式,要求字符串只能包含数字、英文大小写、以及“-”符号
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
下面介绍具体的方法。
1、步骤一 ?: 新建一个工程和类
我们在这个类中开发相关的代码,先看看 java.util.regex 这个包吧。
2、步骤二 : 类 Pattern 的使用
类Pattern ,?其一个对象就代表一种指定的正则表达式,我们通过这个类和一些正则表达式的规则来生成自己想要的字符串匹配规则!
这个类,你无法通过 new 来创建对象,其提供了一个静态方法?compile("正则规则串")来创建对象, 比如我们想要一个以?"java" 开头的字符串匹配规则,我们会用如下代码 Pattern 对象 :
Pattern pattern = Pattern.compile("^java");
注意 :?^?这个符号是正则表达式中的规则,表示字符串的开头!关于其他规则,我们后面会有相关经验给大家逐一介绍!
3、步骤三 : 类 Matcher 的使用
类 Matcher,?代表一个串在特定Pattern对象下的匹配结果,我们通过这个结果可以知道这个串是否符合我们的要求 (我们的具体要求在 Pattern 对象中体现!)。使用方法为 :
//?先构建一个特定的?Pattern?对象
Pattern?pattern?=?Pattern.compile("^java");?
//?调用?Pattern?对象的?matcher?方法,传入一个串,得到匹配结果!
Matcher?matcher?=?javaPrefixPattern.matcher("一个字符串");
4、步骤四 : 测试和总结
运行代码,查看程序运行效果!正则表达式的整个使用框架就是这样,其不同的应用场景基本就是不同的匹配规则!
总结 :正则表达式的彪悍,主要在于其很多成熟的规范的语义规则,通过这些规则的灵活使用,我们可以把一种复杂的匹配需求用一个规则串表达出来!
java正则表达式
在Java中,你必须对每一个向前的斜杠(“\”)进行转义处理。图十不是Java的表示形式,所以我们要在每个“\”前面加上一个“\”以免出现编译错误。遗憾的是,转义处理过程很容易出现错误,所以应该小心谨慎。你可以首先输入未经转义处理的正则表达式,然后从左到右依次把每一个“\”替换成“\\”
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.PatternMatcher;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
public class Zhengze {
public static void main(String[] args) throws MalformedPatternException {
PatternCompiler compiler = new Perl5Compiler();
String str = ",,test,,,,test";
String argexp = ".*,{3}.*";
Pattern pattern = compiler.compile(argexp);
PatternMatcher matcher = new Perl5Matcher();
if(matcher.contains(str,pattern)) {
MatchResult result = matcher.getMatch();
for(int n = 0; n result.length(); n++) {
System.out.println(result.group(n));
}
}else{
System.out.println("nothing");
}
}
}
请问JAVA中正则表达式匹配怎么实现的!
Java中正则表达式匹配的语法规则:
以下是整理出来的Java下运用正则表达式实现匹配的程序案例,代码如下:
package?org.luosijin.test;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
/**
?*?正则表达式
?*?@version?V5.0
?*?@author?Admin
?*?@date???2015-7-25
?*/
public?class?Regex?{
????/**
?????*?@param?args
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?main(String[]?args)?{
????????Pattern?pattern?=?Pattern.compile("b*g");
????????Matcher?matcher?=?pattern.matcher("bbg");
????????System.out.println(matcher.matches());
????????System.out.println(pattern.matches("b*g","bbg"));
????????//验证邮政编码
????????System.out.println(pattern.matches("[0-9]{6}",?"200038"));
????????System.out.println(pattern.matches("//d{6}",?"200038"));
????????//验证电话号码
????????System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+",?"02178989799"));
????????getDate("Nov?10,2009");
????????charReplace();
????????//验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字。
????????System.out.println(pattern.matches("^//d{15}|//d{18}$",?"123456789009876"));
????????getString("D:/dir1/test.txt");
????????getChinese("welcome?to?china,江西奉新,welcome,你!");
????????validateEmail("luosijin123@163.com");
????}
????/**
?????*?日期提取:提取出月份来
?????*?@param?str
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?getDate(String?str){
????????String?regEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";
????????Pattern?pattern?=?Pattern.compile(regEx);
????????Matcher?matcher?=?pattern.matcher(str);
????????if(!matcher.find()){
????????????System.out.println("日期格式错误!");
????????????return;
????????}
????????System.out.println(matcher.group(1));????//分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。
????}
????/**
?????*?字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“A”。
?????*?
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?charReplace(){
????????String?regex?=?"a+";
????????Pattern?pattern?=?Pattern.compile(regex);
????????Matcher?matcher?=?pattern.matcher("okaaaa?LetmeAseeaaa?aa?booa");
????????String?s?=?matcher.replaceAll("A");
????????System.out.println(s);
????}
????/**
?????*?字符串提取
?????*?@param?str
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?getString(String?str){
????????String?regex?=?".+/(.+)$";
????????Pattern?pattern?=?Pattern.compile(regex);
????????Matcher?matcher?=?pattern.matcher(str);
????????if(!matcher.find()){
????????????System.out.println("文件路径格式不正确!");
????????????return;
????????}
????????System.out.println(matcher.group(1));
????}
????/**
?????*?中文提取
?????*?@param?str
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?getChinese(String?str){
????????String?regex?=?"[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]为汉字?
????????Pattern?pattern?=?Pattern.compile(regex);
????????Matcher?matcher?=?pattern.matcher(str);
????????StringBuffer?sb?=?new?StringBuffer();
????????while(matcher.find()){
????????????sb.append(matcher.group());
????????}
????????System.out.println(sb);
????}
????/**
?????*?验证Email
?????*?@param?email
?????*?@author?Admin
?????*?@date?2015-7-25
?????*/
????public?static?void?validateEmail(String?email){
????????String?regex?=?"[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";
????????Pattern?pattern?=?Pattern.compile(regex);
????????Matcher?matcher?=?pattern.matcher(email);
????????if(matcher.matches()){
????????????System.out.println("这是合法的Email");
????????}else{
????????????System.out.println("这是非法的Email");
????????}
????}
}
关于java中正则表达式的一些语句理解
//下面是完整代码,具体的分析都在代码注释里:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test6
{
public static void main(String[] args)
{
//正则表达式字符串:
// [] 内的数字表示取值可以是任意一个,
//\d 匹配一个数字字符。等价于[0-9]。
//\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。
//{n} n是一个非负整数。匹配确定的n次
String regex="1[3458][01256]\\d{8}";
String str="14057539559";
/*
Pattern类:
正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。
然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。
执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
compile方法:
static Pattern compile(String regex)
将给定的正则表达式编译到模式中。
*/
Pattern pattern=Pattern.compile(regex);
/*
* Pattern的
matcher方法
根据要匹配的字符序列 ,创建匹配给定输入与此模式的匹配器,然后返回此模式的新匹配器。
*/
Matcher matcher=pattern.matcher(str);
/*
* Matcher的
matches()方法
尝试将整个区域与模式匹配。
当且仅当整个区域序列匹配此匹配器的模式时才返回 true。
*/
boolean bool=matcher.matches();
if (bool==true)
{
System.out.println("是联通号");
}
else
{
System.out.println("不是联通号");
}
}
/*
代码如上:。我想问的是:
(1)Pattern pattern=Pattern.compile(regex); 这句话能不能帮我分析一下。
(2)Matcher matcher=pattern.matcher(str);分析一下这句话的作用和每一部的作用。
(3) boolean bool=matcher.matches();比较不需要传入参数?
*/
}