Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以逗号分隔的值获取第n个值的正则表达式_Java_Regex - Fatal编程技术网

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过滤器来获得过滤后的日志