簡體   English   中英

正則表達式在Java中拆分字符串

[英]regex to split string in java

我打算使用正則表達式在Java中拆分字符串。 我的輸入如下

2010-11-10 00:00:00,999,隨后出現一些字符串

我在用

inputString.split("(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)");

這給出了一個帶有兩個元素的string [],第二個元素是“跟隨某些字符串”,但是第一個元素是空字符串,如何獲取字符串的第一部分。

更新:我不能假設日期將在開始。 對不起,請您早點解決。

為什么不使用SimpleDateFormat來分析為該任務設計的日期部分?

例如

DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
Date date = fmt.parse("2010-11-10 00:00:00,999");

要獲得輸入字符串的這一部分,您可以找到第二個逗號,並返回之前的所有內容:

String input = "2010-11-10 00:00:00,999, yada yada";
String dateInput = input.substring(0, input.indexOf(',', input.indexOf(',') + 1));

或正則表達式方式(使用肯定的后置斷言以確保它是第二個逗號):

String dateInput = input.split("(?<=.*,.*),")[0];

您可能不想拆分。 Split的參數是字符串之間的分隔符。 因此,您可以成功匹配時間戳,但是split將在該字符串之前(空)和之后(“后面跟隨一些字符串”)返回您的字符串。

你可能想要

Matcher m = Pattern.compile("(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)")
            .matcher("2010-11-10 00:00:00,999, some string follows");
if (m.find()) {
    String first_part = m.group(1);
}

(未經測試!)

為什么不搜索第二個逗號並將字符串手動分成兩個呢? 對我來說似乎太復雜了,無法執行如此簡單的任務。 當然,假設格式總是完全相同,那將起作用。

我認為您沒有捕捉到正確的片段。 正則表達式(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)捕獲整個日期。 如果在每個片段周圍添加捕獲組,則可以遍歷每個捕獲組。 對於這兩個組,Java正則表達式的工作方式是,組0是整個匹配的字符串,然后,這些組就是捕獲的組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM