我是新手写正则表达式所以请帮助。
我想匹配这种模式(用Java):
"ABC",010,00,"123",0,"time","time",01,00, 10, 10,88,217," ",," "
我获得的数据将始终采用上述格式,包含16个值。但格式永远不会改变。
我不是在寻找解析,因为这也可以通过java split解析。 我将拥有大量的这些数据,所以想要捕获前16个数据点并与此模式匹配,以检查我是否正确接收了它,否则忽略。
到目前为止,我只尝试了这个正则表达式:
^(\".\"),.,(\".\"),.,(\".\"),(\".\"),.,.,.,.,.,.,(\".\"),.,(\".\")$
我仍然在构建它。
我只需要匹配给定池中的模式。我先获取16个数据点并尝试查看它是否与此模式匹配,否则忽略。
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:1)
请在下面的代码中找到包含逗号分隔评估字符串,数字和十进制的代码。
public static void commaSeparatedStrings() {
String value = "'It\\'s my world', 'Hello World', 'What\\'s up', 'It\\'s just what I expected.'";
if (value.matches("'([^\'\\\\]*(?:\\\\.[^\'\\\\])*)[\\w\\s,\\.]+'(((,)|(,\\s))'([^\'\\\\]*(?:\\\\.[^\'\\\\])*)[\\w\\s,\\.]+')*")) {
System.out.println("Valid...");
} else {
System.out.println("Invalid...");
}
}
/**
*
*/
public static void commaSeparatedDecimals() {
String value = "-111.00, 22111.00, -1.00";
// "\\d+([,]|[,\\s]\\d+)*"
if (value.matches(
"^([-]?)\\d+\\.\\d{1,10}?(((,)|(,\\s))([-]?)\\d+\\.\\d{1,10}?)*")) {
System.out.println("Valid...");
} else {
System.out.println("Invalid...");
}
}
/**
*
*/
public static void commaSeparatedNumbers() {
String value = "-11, 22, -31";
if (value.matches("^([-]?)\\d+(((,)|(,\\s))([-]?)\\d+)*")) {
System.out.println("Valid...");
} else {
System.out.println("Invalid...");
}
}