多语言展示
当前在线:724今日阅读:39今日分享:10

正则表达式30分钟入门系列之7

正则表达式也是一种语言,在解析字符串领域独领风骚。本文分享关于正则表达式中最常用的关键字+、?的用法
工具/原料
1

IntelliJ IDEA

2

Java

3

Regular expressions

方法/步骤
1

前面讲的正则表达式的关键字,大多是匹配一个字符现实的应用中,肯定都是比一个字符多的,这些场景怎么表示呢这个问题前面已经提到过,“*”这个表示数量的关键字,表示“*”号前面的字符串重复0次或无限次有时候我就需要重复11次就可以,譬如匹配电话号码此时关键词“*”就不满足要求了现在就来介绍下表示字符串数量方面的其它关键字+:这个关键字表示这样的数量--“*”前面的字符可以重复1次或无限次?:这个关键字表示这样的数量--“?”前面的字符可以重复0次或1次先来看看测试的脚手架代码:Code:package chapter4;import java.util.Arrays;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexStudyDemo {    public static void main(String[] args) {        String regexStr = 'Hello[\\w\\W]!';        List input = Arrays.asList('Hello汉字!', 'Hello  !', 'Hello  !', 'Hello787');        System.out.println(isMatch(input, regexStr));    }    private static boolean isMatch(List inputs, String regexStr) {        boolean result = true;        for (String input : inputs) {            Pattern pattern = Pattern.compile(regexStr);            Matcher matcher = pattern.matcher(input);            if (matcher.matches()) {                continue;            }            System.out.println(String.format('%s is not match  %s', regexStr, input));            result = false;        }        return result;    }}

3

把'Hello[\\w\\W]!'这个正则表达式怎么改改,让正则表达式能够匹配上面的字符串细心的tx已经想起上面提到的关键字“+”好,更改下代码Code:String regexStr = 'Hello[\\w\\W]+!';List input = Arrays.asList('Hello汉字!', 'Hello  !', 'Hello  !', 'Hello787!');//更改这一行,是因为最后一个字符串忘记写'!'了

4

按上面的解析,加上“+”这个关键字后,刚才不被匹配的字符串,应该都可以被成功匹配执行一下,看看结果Output:true与预期一致OK

5

'?'这个关键字,还没有讲到呢是的,前面讲到的关键字都是要匹配某种特定形态的字符,还有一种场景,就是可能存在或不存在某种特定形态的字符这种场景就是“?”关键字发挥作用的场景了更改下代码:String regexStr = 'Hello[\\w\\W]?!';List input = Arrays.asList('Hello汉!', 'Hello!', 'Hello\n!', 'Hello\r!');

6

按照上面的分析,更改后的正则表达式已经能匹配到,上面列的所有字符串执行下,看看结果Output:true

推荐信息