zoukankan      html  css  js  c++  java
  • 正则表达式学习笔记(四)——位置匹配

    1.1单词边界

    限定符指定单词边界,b是英文boundary(边界)的首字母,例如

    文本:The catscattered his food all over the room.

    正则表达式:cat

    结果: The cat scatteredhis food all over the room.

    正则表达式:cat

    结果: The cat scattered his food all overthe room.

    如果想不匹配一个单词的边界(),使用B ,例如下面的例子匹配多余的空格

    文本: please enter the nine-digit id as it appears on your color – cpdedpass-key

    正则表达式:B-B

    结果:please enter the nine-digit id as it appears on your color - cpdedpass-key

    分析:B-B

    将匹配一个前后都不是单词边界的连字符(因为空格和连字符都不是字母数字或下划线)。只有color – cpded中的连字符可以与之匹配

    1.2字符串边界

    1.2.1匹配字符串开头

    我们知道使用^可以用来取非,其实他还有匹配一个字符串的开头的作用。

    当^出现在一个字符集合中(被放到[和]之间)并且紧跟在左方括号[的后面是,才能发挥“求非”作用。

    如果是在一个字符集合的外面并且位于一个模式的开头,^将匹配字符串的开头。例如,下面的测试可以检查一个文档是否为xml文档(xml文档必须是<?xmlversion="1.0"?>类型,而且必须放在开头)

    文本

    this is not a xml document, real not a xmldocument

    <?xml version="1.0"ecoding=”utf-8” ?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML1.1//EN" " >
    <wml>
    <head>
    <access/>

    正则表达式:<?xml.*?>

    结果

    this is not a xml document, real not a xmldocument

    <?xml version="1.0"ecoding=”utf-8” ?>
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML1.1//EN" " >
    <wml>
    <head>
    <access/>

    我们就以为这是xml文件了,其实这不是xml文件,xml文件必须是在开头有上述标示才行

    正确的正则表达式:^s*<?xml.*??>

     1.2.2 匹配字符串结尾

    使用$即可

    1.2.3  分行匹配

    (?m)说明是分行模式,必须出现在整个模式的最前面,下例将会找出所有的注释文章

    文本:

    String author()default "aaa";
     //aaaaaaa

     int[]arrayAttr() default {1};
     //bbbbbbbb
     MetaAnnotation annotationAttr() default@MetaAnnotation("");
     //ccccccc
     Class<PersonChiness> classType()default PersonChiness.class;

    正则表达式:(?m)^s*//.*$

    结果:Stringauthor() default "aaa";
     //aaaaaaa

     int[]arrayAttr() default {1};
     //bbbbbbbb
     MetaAnnotation annotationAttr() default@MetaAnnotation("");
     //ccccccc
     Class<PersonChiness> classType()default PersonChiness.class;
    警告:有许多正则表达式不支持(?m)

  • 相关阅读:
    图论算法之查找强分支
    图论算法之拓扑排序的简单代码
    图论算法之最短路径
    由函数符号找不到联想到的动态链接过程
    linux下cp覆盖原so文件时引起的段错误原因确定
    java 中能否使用 动态加载的类(Class.forName) 来做类型转换?
    为什么java不支持多重继承?
    static inner class 什么时候被加载
    thinking in java 读书笔记 --- overriding private method
    java List排序方法 Comparator和Comparable
  • 原文地址:https://www.cnblogs.com/thiaoqueen/p/7675234.html
Copyright © 2011-2022 走看看