我从正则表达式开始,我想要像这样的
字符串中提取值String test="[ABC]Name:User:Date: Adresse ";
我想要提取名称,用户,日期和地址 我可以使用substring和split
来完成这个技巧String test = "String test="[ABC]Name:User:Date: Adresse ";
String test2= test.substring(5,test.length());
System.out.println(test2);
String[] chaine = test2.split(":");
for(String s :chaine)
{
System.out.println("Valeur " + s);
}
但我想尝试使用正则表达式,我做了
pattern = Pattern.compile("^[(ABC)|:].");
但它不起作用
你能帮我吗?
非常感谢
答案 0 :(得分:1)
String#split
确实是完成您要做的事情的最佳方式。话虽如此,使用正则表达式,以下内容将为您提供相同的输出:
Pattern p = Pattern.compile("^(?:\\[ABC\\])([^:]+):([^:]+):([^:]+):([^:]+)$");
Matcher m = p.matcher(test);
while (m.find()) {
System.out.println("Valeur " + m.group(1)); // Name
System.out.println("Valeur " + m.group(2)); // User
System.out.println("Valeur " + m.group(3)); // Date
System.out.println("Valeur " + m.group(4)); // Address
}
答案 1 :(得分:0)
你必须逃避[
而]
here是一个有效的例子。
请注意,在正则表达式变得复杂的情况下,您的代码可能比正则表达式更容易维护。
有些人在遇到问题时会想“我知道,我会用 正则表达式。“现在他们有两个问题。 - Jamie Zawinski