“正则表达式 元字符 定位符”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
(未显示同一用户的3个中间版本)
第24行: 第24行:
 
|匹配目标字符串的边界
 
|匹配目标字符串的边界
 
|han\\b
 
|han\\b
|这里说的字符串边界指的是子串间有空格,或者是目标字符串的结束位置
+
|这里说的字符串边界指的是子串间有空格,或者是目标字符串的结束位置;
 +
既可以是字符串的最后,也可是空格前面的子串
 
|hanshunping sp<u>han</u> nn<u>han</u>
 
|hanshunping sp<u>han</u> nn<u>han</u>
 
|-
 
|-
第399行: 第400行:
 
</syntaxhighlight><syntaxhighlight lang="console">
 
</syntaxhighlight><syntaxhighlight lang="console">
 
找到:han
 
找到:han
 +
找到:han
 +
</syntaxhighlight>
 +
 +
 +
 +
=== 示例:在 "hanshunping sphan nnhanu" 中找 "han\\b" ===
 +
<syntaxhighlight lang="java">
 +
import java.util.regex.Matcher;
 +
import java.util.regex.Pattern;
 +
 +
public class RegExp06 {
 +
 +
    public static void main(String[] args) {
 +
 +
        String content = "hanshunping sphan nnhanu";
 +
 +
        //表示匹配边界的han
 +
        String regStr = "han\\b";
 +
 +
        Pattern pattern = Pattern.compile(regStr);
 +
 +
        Matcher matcher = pattern.matcher(content);
 +
 +
        while (matcher.find()) {
 +
 +
            System.out.println("找到:" + matcher.group(0));
 +
 +
        }
 +
 +
    }
 +
 +
}
 +
</syntaxhighlight><syntaxhighlight lang="console">
 +
找到:han
 +
</syntaxhighlight>
 +
 +
 +
 +
 +
 +
=== 示例:在 "hanshunping sphan nnhan" 中找 "han\\B" ===
 +
<syntaxhighlight lang="java">
 +
import java.util.regex.Matcher;
 +
import java.util.regex.Pattern;
 +
 +
public class RegExp06 {
 +
 +
    public static void main(String[] args) {
 +
 +
        String content = "hanshunping sphan nnhan";
 +
 +
        //和 \\b 的含义刚好相反
 +
        String regStr = "han\\B";
 +
 +
        Pattern pattern = Pattern.compile(regStr);
 +
 +
        Matcher matcher = pattern.matcher(content);
 +
 +
        while (matcher.find()) {
 +
 +
            System.out.println("找到:" + matcher.group(0));
 +
 +
        }
 +
 +
    }
 +
 +
}
 +
</syntaxhighlight><syntaxhighlight lang="console">
 
找到:han
 
找到:han
 
</syntaxhighlight>
 
</syntaxhighlight>

2022年11月17日 (四) 11:16的最新版本

https://www.bilibili.com/video/BV1Eq4y1E79W?p=12

定位符,规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置

符号 含义 示例 说明 匹配输入
^ 指定起始字符 ^[0-9]+[a-z]* 以至少1个数字开头,后接任意个小写字母的字符串 123、6aa、555edf
$ 指定结束字符 ^[0-9]\\-[a-z]+$ 以1个数字开头后接连字符"-",并以至少1个小写字母结尾的字符串 1-a
\\b 匹配目标字符串的边界 han\\b 这里说的字符串边界指的是子串间有空格,或者是目标字符串的结束位置;

既可以是字符串的最后,也可是空格前面的子串

hanshunping sphan nnhan
\\B 匹配目标字符串的非边界 han\\B 和\\b的含义刚刚相反 hanshunping sphan nnhan

示例:在 "123abc" 中找 ^[0-9]+[a-z]*

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123abc";

        //以至少1个数字开头,后接任意个小写字母的字符串
        String regStr = "^[0-9]+[a-z]*";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}
找到:123abc

^[0-9]只匹配数字开头



示例:在 "a123abc" 中找 ^[0-9]+[a-z]*

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "a123abc";

        //以至少1个数字开头,后接任意个小写字母的字符串
        String regStr = "^[0-9]+[a-z]*";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}

控制台没有输出,因为 content 不再是数字字符开头



示例:在 "123abc12" 中找 ^[0-9]+[a-z]*

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123abc12";

        //以至少1个数字开头,后接任意个小写字母的字符串
        String regStr = "^[0-9]+[a-z]*";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}
找到:123abc



示例:在 "123" 中找 ^[0-9]+[a-z]*

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123";

        //以至少1个数字开头,后接任意个小写字母的字符串
        String regStr = "^[0-9]+[a-z]*";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}
找到:123



示例:在 "123abc12" 中找 ^[0-9]+[a-z]+$

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123abc12";

        //以至少1个数字开头,必须以至少1个小写字母结束
        String regStr = "^[0-9]+[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}

控制台什么也不输出,因为正则表达式要求 内容字符串必须以至少1个小写字母结束


示例:在 "123abc" 中找 ^[0-9]+[a-z]+$

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123abc";

        //以至少1个数字开头,必须以至少1个小写字母结束
        String regStr = "^[0-9]+[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }


    }

}
找到:123abc



示例:在 "123" 中找 ^[0-9]+[a-z]+$

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123";

        //以至少1个数字开头,必须以至少1个小写字母结束
        String regStr = "^[0-9]+[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }
        
    }

}

控制台什么也不输出,因为正则表达式要求 内容字符串必须以至少1个小写字母结束



示例:在 "123a" 中找 ^[0-9]+[a-z]+$

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123a";

        //以至少1个数字开头,必须以至少1个小写字母结束
        String regStr = "^[0-9]+[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}
找到:123a



示例:在 "123abc" 中找 ^[0-9]+\\-[a-z]+$

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123abc";

        //以至少1个数字开头,必须以至少1个小写字母结束,同时中间有连字符(减)-
        String regStr = "^[0-9]+\\-[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}

控制台什么也不输出,因为正则表达式要求被匹配内容中间还要有连字符(减号)-



示例:在 "123-abc" 中找 "^[0-9]+\\-[a-z]+$"

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "123-abc";

        //以至少1个数字开头,必须以至少1个小写字母结束,同时中间有连字符(减)-
        String regStr = "^[0-9]+\\-[a-z]+$";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}
找到:123-abc


示例:在 "hanshunping sphan nnhan" 中找 "han\\b"

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "hanshunping sphan nnhan";

        //表示匹配边界的han
        String regStr = "han\\b";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}
找到:han
找到:han


示例:在 "hanshunping sphan nnhanu" 中找 "han\\b"

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "hanshunping sphan nnhanu";

        //表示匹配边界的han
        String regStr = "han\\b";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}
找到:han



示例:在 "hanshunping sphan nnhan" 中找 "han\\B"

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp06 {

    public static void main(String[] args) {

        String content = "hanshunping sphan nnhan";

        //和 \\b 的含义刚好相反
        String regStr = "han\\B";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            System.out.println("找到:" + matcher.group(0));

        }

    }

}
找到:han