JAVA中的Pattern

以后填坑用

正则中的零宽断言分为正向零宽先行断言,和负向零宽先行断言,先看一段代码:

        Pattern pattern = Pattern.compile("ab(?=[A-Z])");
        Matcher matcher=pattern.matcher("abZW863");
        if(matcher.find()){
            System.out.println(matcher.group());
        }

结果输出为:

ab

匹配后面跟随任意一个大写字母的字符串”ab”。最终匹配结果是”ab”,因为零宽断言”(?=[A-Z])”并不匹配任何字符,只是用来规定当前位置的后面必须是一个大写字母。

再看一段代码:

        Pattern pattern = Pattern.compile("ab(?![A-Z])");
        Matcher matcher=pattern.matcher("abZW863");
        if(matcher.find()){
            System.out.println(matcher.group());
        }

其结果无输出,原因在原matcher.find()结果为false,其语义是匹配后面不跟随任意一个大写字母的字符串”ab”。正则表达式没能匹配任何字符,因为在字符串中,ab的后面跟随有大写字母。

(?=exp) 零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式。

(?<=exp) 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式。

负向:

(?!exp) 零宽度负预测先行断言,它断言此位置的后面不能匹配表达式。

(?<!exp) 零宽度负回顾后发断言,它断言此位置的前面不能匹配表达式。

正则表达式中的量词

  • 贪心
  • 懒惰
  • 占有

http://blog.sina.com.cn/s/blog_12e4623a90101cqy0.html

http://www.jb51.net/article/95906.htm

### 回答1: Javapattern.compile是一个方法,用于将正则表达式编译为一个Pattern对象。Pattern对象可以用于匹配字符串。该方法的语法如下: public static Pattern compile(String regex) 其,regex是一个字符串,表示正则表达式。该方法返回一个Pattern对象,表示编译后的正则表达式。可以使用该对象的matcher方法对字符串进行匹配。 ### 回答2: 在JavaPattern.compile()是一个正则表达式的编译器,它接受一个正则表达式字符串作为参数,然后将其编译成一个Pattern对象。Pattern对象是一个正则表达式的表示,它可以被用来匹配其他字符串。 在Pattern.compile()的实现,首先解析传入的正则表达式字符串,然后生成一个解析树,树上的每个节点都代表着一个子表达式。然后将解析树转换成一个计算自动机,该自动机可以识别正则表达式所表示的任何字符串。 Pattern.compile()方法还可以接受一个flag参数,用于修改正则表达式的匹配行为。flag参数可以为以下常量之一: - Pattern.CANON_EQ:启用规范等价 - Pattern.CASE_INSENSITIVE:启用不区分大小写的匹配 - Pattern.COMMENTS:启用注释模式,允许使用#号进行注释 - Pattern.MULTILINE:多行模式,使^和$匹配每一行的起始和结尾而不是整个字符串的起始和结尾 - Pattern.DOTALL:启用"."匹配换行符 - Pattern.UNICODE_CASE:启用Unicode感知的匹配,使得字母表的所有字母都能够匹配其对应的Unicode字符 - Pattern.UNIX_LINES:启用Unix换行符模式,使得\n匹配任何一种换行符 最后需要注意的是,Pattern.compile()方法是一个耗时的操作,因为它需要解析和编译正则表达式。因此,在实际使用,最好将Pattern对象缓存起来以便重复使用。 ### 回答3: JavaPattern.compile是一个正则表达式的编译器,用于将字符串编译为一个Pattern对象,以便进行正则表达式匹配。 Pattern.compile方法通常用于两个方面:一是用于快速的创建一个正则表达式模式,二是在需要执行多次匹配操作时,可提高效率。 Pattern.compile在Java的正则表达式非常重要,该函数的作用是用于创建Pattern的实例,此实例是一个正则表达式的编译版本,通常用于在文本查找字符串模式;这里的字符串就是一个正则表达式,所以在使用compile的时候需要将正则表达式字符串作为参数传递给该方法。 compile方法有两个参数,第一个参数是一个正则表达式字符串,第二个参数是一个表示正则表达式行为的位标志(flag),通常情况下我们不需要设置第二个参数,使用默认值即可,如果你有特殊需求,可以使用相应的位标志设置来使用compile方法。 当我们用 Pattern.compile 方法编译正则表达式时,是对该正则表达式进行了的一次预编译,返回一个Pattern对象,该对象可以用来对输入的文本进行匹配操作。同时,Pattern.compile方法还可以接受一个编译的模式,我们也可以通过 modify 方法来进行模式的修改。 在Java,正则表达式编译是一个比较耗时的操作,所以如果我们需要多次使用同一个正则表达式进行匹配操作时,建议我们先使用 Pattern.compile 进行编译,再使用 Matcher 进行匹配操作,这样可以提高程序的效率和性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值