请帮助开发regEx表达式。我的要求是,以验证以下字符串,java regEx,真的很困惑
String="asdasd|adajjsd|asas,asdas|asda|sd";
模式ID [字符串] separatedByPipe [字符串] separatedByPipe [字符串]
例如:String="asdasd|adajjsd|asas"
。
重复上述模式,用逗号分隔,如果有多个字符串 ex:String="asdasd|adajjsd|asas,asdas|asda|sd"
;
我可以假设该模式将只重复最多3次,即在我的字符串中最多2个逗号。
附上我的TestClass
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][email protected])([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]*\\,?)+"));
工作般的魅力。那么为什么同样的问题不适用于我的上课。请help.Am使用JDK1.5
因为在正则表达式中没有特殊含义,所以不需要反斜杠转义'''。 – Patashu