首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中对字符串进行拆分的正则表达式

在java中对字符串进行拆分的正则表达式
EN

Stack Overflow用户
提问于 2010-11-10 19:42:51
回答 4查看 2K关注 0票数 0

我计划使用regex在java中拆分一个字符串。我的输入如下

2010-11-10 00:00:00,999,一些字符串如下

我在用

代码语言:javascript
复制
inputString.split("(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3},)");

这给出了一个包含两个元素的string[],第二个元素是“string后”,但是第一个元素是空字符串,如何获得字符串的第一部分。

更新:我不能假设日期将在开始。抱歉,刚才忘了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-10 19:47:06

你可能不想分开。Split的参数是字符串之间的分隔符。因此,您成功地匹配了时间戳,但是split是在该时间戳之前(空)和后面(“一些字符串后面”)返回字符串。

你可能想

代码语言:javascript
复制
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);
}

(未经测试!)

票数 4
EN

Stack Overflow用户

发布于 2010-11-10 19:44:30

为什么不使用SimpleDateFormat来解析专为此任务设计的日期部分呢?

例如:

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

要获取输入字符串的这一部分,您可以找到逗号的第二个匹配项,并返回它前面的所有内容:

代码语言:javascript
复制
String input = "2010-11-10 00:00:00,999, yada yada";
String dateInput = input.substring(0, input.indexOf(',', input.indexOf(',') + 1));

或者使用regex方法(使用正向后断言来确保它是第二个逗号):

代码语言:javascript
复制
String dateInput = input.split("(?<=.*,.*),")[0];
票数 3
EN

Stack Overflow用户

发布于 2010-11-10 19:45:47

为什么不搜索第二个逗号并手动将字符串拆分为两个?对我来说,做这么简单的任务似乎太复杂了。当然,假设格式总是完全相同的话,这是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4148387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档