请帮助开发一个regEx表达式。我的要求是验证以下字符串,
String="asdasd|adajjsd|asas,asdas|asda|sd";
pattern id [String] separatedByPipe [String] separatedByPipe [String]
例如:String="asdasd|adajjsd|asas"
如果有多个字符串,则重复上述模式,用逗号分隔
例如: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]+@)([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]*\\,?)+"));
像魅力一样工作。那么为什么同样的不适用于我的上课。请帮助。使用jdk1.5
答案 0 :(得分:1)
这个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
}
只需两行代码即可获取数据。
答案 1 :(得分:0)
将String regex更改为
String regex = "([a-z]*\\|[a-z]*\\|[a-z]*\\,?)+";
然后尝试
String inputString1 = "asdasd|adajjsd|asas,asdas|asda|sd";
String regex = "([a-z]*\\|[a-z]*\\|[a-z]*\\,?)+";
Pattern pattern1 = Pattern.compile(regex);
Matcher matcher1 = pattern1.matcher(inputString1);
boolean result = matcher1.find();
System.out.println(inputString1.substring(matcher1.regionStart(), matcher1.regionEnd()));
答案 2 :(得分:0)
您可以使用此正则表达式对其进行验证
^(?!.*,$)[a-z]+(\\|[a-z]+,?)*$
答案 3 :(得分:0)
在,
上拆分,然后在|
String[] terms = string.split(",");
for (String term : terms) {
String[] parts = term.split("\\|");
}
答案 4 :(得分:0)
如果你想测试整个静态字符串作为一个字符串,那么这个正则表达式模式将帮助你..但是如果你想测试由“|”分隔的不同字符串然后你需要采取其他正则表达式模式。
String regex =“([az] {6} \ | [az] {7} \ | [az] {4} \,[az] {5} \ | [az] {2}?)+” ;
答案 5 :(得分:0)
请尝试以下方法:
String regex = "[a-z]*\\|*,*[a-z]*";
其余代码不需要更改。