[英]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.