应匹配以下内容:

AAA123
ABCDEFGH123
XXXX123

我能做什么:”。* 123”?


当前回答

试试正则表达式{3,}。这将匹配除新行以外的所有字符。

其他回答

我所见过的最常见的编码方法是使用字符类,其成员构成所有可能字符集的分区。

通常人们把它写成[\s\ s](空白或非空白),不过[\w\ w]、[\d\ d]等都可以。

使用模式。匹配任意字符一次,.*匹配任意字符0次或多次,.+匹配任意字符1次或多次。

我喜欢以下几点:

[!- ~]

它匹配所有字符代码,包括特殊字符和正常的A-Z, A-Z, 0-9

https://www.w3schools.com/charsets/ref_html_ascii.asp

例如faker.internet.password(20, false, /[!-~]/)

会生成这样的密码:0+>8*nZ\\*-mB7Ybbx,b>

.*和.+用于除换行外的任何字符。

双逃离

以防万一,你想要包含新的行,下面的表达式可能也适用于那些需要双转义的语言,如Java或c++:

[\\s\\S]*
[\\d\\D]*
[\\w\\W]*

零次或多次,或者

[\\s\\S]+
[\\d\\D]+
[\\w\\W]+

一次或多次。

单遗漏:

对于一些语言,如c#, PHP, Ruby, PERL, Python, JavaScript,不需要双重转义:

[\s\S]*
[\d\D]*
[\w\W]*
[\s\S]+
[\d\D]+
[\w\W]+

Test

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


public class RegularExpression{

    public static void main(String[] args){

        final String regex_1 = "[\\s\\S]*";
        final String regex_2 = "[\\d\\D]*";
        final String regex_3 = "[\\w\\W]*";
        final String string = "AAA123\n\t"
             + "ABCDEFGH123\n\t"
             + "XXXX123\n\t";

        final Pattern pattern_1 = Pattern.compile(regex_1);
        final Pattern pattern_2 = Pattern.compile(regex_2);
        final Pattern pattern_3 = Pattern.compile(regex_3);

        final Matcher matcher_1 = pattern_1.matcher(string);
        final Matcher matcher_2 = pattern_2.matcher(string);
        final Matcher matcher_3 = pattern_3.matcher(string);

        if (matcher_1.find()) {
            System.out.println("Full Match for Expression 1: " + matcher_1.group(0));
        }

        if (matcher_2.find()) {
            System.out.println("Full Match for Expression 2: " + matcher_2.group(0));
        }
        if (matcher_3.find()) {
            System.out.println("Full Match for Expression 3: " + matcher_3.group(0));
        }
    }
}

输出

Full Match for Expression 1: AAA123
    ABCDEFGH123
    XXXX123

Full Match for Expression 2: AAA123
    ABCDEFGH123
    XXXX123

Full Match for Expression 3: AAA123
    ABCDEFGH123
    XXXX123

如果您想探究这个表达式,regex101.com的右上角面板上有解释。如果你愿意,你也可以在这个链接中观看,它是如何与一些样本输入匹配的。


RegEx电路

jex。Im可视化正则表达式:

是的,你可以。这应该有用。

. =除换行符以外的任何字符 \。=实际的点字符 。?= .{0,1} =匹配除换行符0或1之外的任何字符 .* = .{0,} =匹配除换行符以外的任何字符0次或更多次 .+ = .{1,} =匹配除换行符以外的任何字符一次或多次