Java 以逗号分隔的值获取第n个值的正则表达式
这个问题Java 以逗号分隔的值获取第n个值的正则表达式,java,regex,Java,Regex,这个问题 /(?:[^\,]*\,){10}([^,]*)/ 返回第10个值之前的所有值,但我正在寻找一个只给我第10个值的查询。有人能帮忙吗 public String get10thElement(String input) { // String input = "\"20266547:20000256\",\"-\",\"20000256\",\"20266547\",\"-\",9349,\"-\",\"-\",\"2016-01-23\",\"04:41:39\",\"
/(?:[^\,]*\,){10}([^,]*)/
返回第10个值之前的所有值,但我正在寻找一个只给我第10个值的查询。有人能帮忙吗
public String get10thElement(String input) {
// String input = "\"20266547:20000256\",\"-\",\"20000256\",\"20266547\",\"-\",9349,\"-\",\"-\",\"2016-01-23\",\"04:41:39\",\"GET /dojo/1.10.4-std/dojo/fx.js HTTP/1.1\",200,\"3433\",\"SCRUB_1_URL\"";
String[] elements = input.split(",");
return elements[9];
}
您已经将其标记为Java。使用拆分方法
您已经将其标记为Java。使用拆分方法。从Logentries.com,我认为您需要以下内容:
where(/(?:[^\,]*\,){10}(?P<tenthItem>([^,]*))/)
这意味着您希望任何匹配的([^,]*)
都进入一个名为tenthItem
的变量,我想您需要以下内容:
where(/(?:[^\,]*\,){10}(?P<tenthItem>([^,]*))/)
这表示您希望任何匹配的
([^,]*)
都进入名为tenthItem
的变量中。尽管您可以使用正则表达式或字符串#split解析CSV,但为什么要重新发明轮子呢?有很多你可以使用的好东西,他们会为你处理很多特殊情况。例如,您的解决方案不处理带逗号的带引号的字符串。也许你现在还不需要它,但你最好警惕它,以免将来需要它。以下是您将如何做到这一点:
File csvData = new File("/path/to/csv");
CSVParser parser = CSVParser.parse(csvData, CSVFormat.RFC4180);
for (CSVRecord csvRecord : parser) {
String item10 = csvRecord.get(9)
}
虽然可以使用正则表达式或字符串拆分解析CSV,但为什么要重新发明轮子呢?有很多你可以使用的好东西,他们会为你处理很多特殊情况。例如,您的解决方案不处理带逗号的带引号的字符串。也许你现在还不需要它,但你最好警惕它,以免将来需要它。以下是您将如何做到这一点:
File csvData = new File("/path/to/csv");
CSVParser parser = CSVParser.parse(csvData, CSVFormat.RFC4180);
for (CSVRecord csvRecord : parser) {
String item10 = csvRecord.get(9)
}
你用的是什么语言,你能描述一下你想在这里做什么吗?我想要一个java正则表达式我有很多这样的日志行:“20266547:20000256”,“-”,“20000256”,“20266547”,“-”,9349,“-”,“-”,“2016-01-23”,“04:41:39”,“GET/dojo/1.10.4-std/dojo/fx.js HTTP/1.1”,“200”,“3433”,“SCRUB\u URL”我想从每行中获得第10个值是的,但您使用的是什么语言?您的第二个捕获组已经在捕获第10个值,所以您需要做的就是提取它。上次我会问您:您使用的是什么语言?您不应该使用regexp解析csv文件:您有时间处理引号或多行,而regexp不适合这种任务您使用的是什么语言,我想要一个java正则表达式,我有很多这样的日志行:“20266547:20000256”,“20266547”,“20000256”,“20266547”,“9349”,“-”,“-”,“-”,“2016-01-23”,“04:41:39”,“GET/dojo/1.10.4-std/dojo/fx.js HTTP/1.1”,“200”,“3433”,“SCRUB\u\u URL”我想从每行中获得第10个值是的,但您使用的是什么语言?您的第二个捕获组已经在捕获第10个值,所以您需要做的就是提取它。上次我会问您:您使用的是什么语言?您不应该使用regexp解析csv文件:您有时间处理引号或多行,而且regexp不适合这种任务,如果中间有一个逗号,它就不起作用quotes@JérémieB我认为他的问题主要集中在如何让regex使用日志条目为他工作。至于他的原始正则表达式是否在所有情况下都有效,这是另一个故事。如果两者之间有逗号,这就行不通了quotes@JérémieB我认为他的问题主要集中在如何让regex使用日志条目为他工作。至于他的原始正则表达式是否在所有情况下都有效,这是另一个故事。我只需要logentries.com的解决方案。然后我可以使用他们的API和regexp过滤器来获得过滤后的日志。我只需要为logentries.com提供一个解决方案。然后我可以使用他们的API和regexp过滤器来获得过滤后的日志