gpt4 book ai didi

java regEx,真的很困惑

转载 作者:行者123 更新时间:2023-12-01 14:31:14 25 4
gpt4 key购买 nike

请帮助开发正则表达式。我的要求是验证以下字符串,

String="asdasd|adajjsd|asas,asdas|asda|sd";

模式 ID [String]separatedByPipe[String]separatedByPipe[String]

例如:String="asdasd|adajjsd|asas"

如果有多个字符串,则重复以上模式,用逗号分隔例如:String="asdasd|adajjsd|asas,asdas|asda|sd";

我可以假设该模式最多只会重复 3 次,即字符串中最多有 2 个逗号。

附上我的测试类

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

public class TestReg {

public static void main(String[] args) {

//String regex = "[a-z]+\\|[a-z]+,[a-z]+\\|[a-z]*";
String regex = "([a-z]\\|[a-z]\\|[a-z]\\,?)+";
//String regex = "[a-z]+\\|re{ 1}[a-z]+\\|re{ 1}[a-z]+[a-z]+\\|[a-z]+\\|[a-z]*";
//String regex = "[a-z](|)[a-z](,)[a-z](|)[a-z]";
//String pattern="([a-z]+@)([a-z]+)(\\.[a-z]+)";
//String inputString1 = "shdifhsdui-asdasd,shdifhsdui|abc";


//String inputString1 = "";//failed
String inputString1 = "asdasd|adajjsd|asas,asdas|asda|sd";//success
//String inputString1 = "asdasd|adasd-asdas|asdasd";//success
//String inputString1 = "asdasd|adasd|asassa,asdas|asdasd";//failed
Pattern pattern1 = Pattern.compile(regex);
Matcher matcher1 = pattern1.matcher(inputString1);
boolean result = matcher1.find();
System.out.println(result);
}

}

大家好,

System.out.println ("asdasd|adajjsd|asa,s|sad|sdas,asd|as|as|da".matches ("([a-z]*\\|[a-z]*\\|[a-z]*\\,?)+"));

工作很有魅力。那么为什么同样的方法在我上面的类(class)中不起作用呢?请帮忙。我使用jdk1.5

最佳答案

这个 java 正则表达式将满足您的要求:

"[a-z]+(\\|[a-z]+){2}(,[a-z]+(\\|[a-z]+){2})*"

这将验证输入,但要提取部分,我只需在逗号上使用 split() ,然后在管道上拆分每个部分:

for (String group : input.split(",")) {
String[] parts = group.split("\\|");
// do something with the parts
}

只需两行代码即可获取数据。

关于java regEx,真的很困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com