Regex Java具有特定的开始,然后是某些字符以外的任何东西



我一直在与Java Regex挣扎我希望我的正则是2个特定字符,然后将任何与第二组匹配的东西

String regex = "(^[a-zA-Z | _])([a-zA-Z0-9\-_^\s]*)";
Pattern pattern = Pattern.compile(regex);
String s1 = "hello world";
String s2 = "_Sau90-jds";
String s3 = "5_idsjd";
String s4 = "A-next";
ArrayList<String> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
for (String string : list) {
    Matcher matcher = pattern.matcher(string);
    if (matcher.find()) {
        System.out.println(matcher.group(0));
    }
}

我想要的结果:

_Sau90-jds
A-suivant

但是我一直有

hello world
_Sau90-jds
A-suivant

我的字符串必须从字母a-za-z或" _"开始,然后只能包含字母,数字,下划线和连字符,这意味着没有白色空间。

我尝试了String regex = "(^[a-zA-Z | _])([a-zA-Z0-9\-_\S]*)"

String regex = "(^[a-zA-Z | _])([a-zA-Z0-9\-_]*)"

,但他们俩都给了我

hello
_Sau90-jds
A-next

简介

您的正则有几件事会导致它无法正常工作。

  • [a-zA-Z | _]说要匹配集合中存在的任何字符,因此,这与a-zA-Z |_(字面意思)匹配。因此,您实际上在|字符上包括匹配项以及Space 字符。
  • a-zA-Z0-9-_^s说要匹配集合中存在的任何字符,因此,这与^(字面意思)匹配。因此,实际上,您实际上包括$字符以及任何Whitespace字符的匹配项。
  • 另外,不添加hello(线路结束),您将与您在结果中看到的^匹配。

代码

请参阅此处使用的正则

^[^Wd][w-]*$

基本上与

相同
^[a-zA-Z_][a-zA-Z0-9_-]*$

结果

输入

hello world
_Sau90-jds
5_idsjd
A-next

输出

_Sau90-jds
A-next

说明

  • [^Wd]在线开始时断言位置
  • [w-]*匹配除数字以外的任何单词字符
  • -匹配任何单词字符或连字符$任何次数
  • CC_16在行末尾断言位置

让我们按照您的要求:

我的字符串必须从字母A-ZA-Z或" _" 开始,然后它只能包含字母,数字,下端和连字符,这意味着没有白色空间。

并逐步构造正则态度。

  1. 以字母A-ZA-Z或" _"

    开始
    ^[a-zA-Z_]
    
  2. 然后它只能包含字母,数字,下划线和连字符

    [a-zA-Zd_-]+
    
Please try this :
public class Regex {
    public static void main(String[] args) {
        String regex = "^[a-zA-Z_][a-zA-Z0-9_-]*$";
        String regexPhase2 = "(^[a-z])([a-zA-Z0-9\-_^\s]*)";
        Pattern pattern = Pattern.compile(regex);
        String s1 = "hello world";
        String s2 = "_Sau90-jds";
        String s3 = "5_idsjd";
        String s4 = "A-next";
        ArrayList<String> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        for (String string : list) {
            Matcher matcher = pattern.matcher(string);
            if (matcher.find()) {
               System.out.println(matcher.group(0));
            }
        }
    }
}

相关内容