Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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中最有效的方法解析以下划线分隔的字段字符串_Java_Regex_Parsing - Fatal编程技术网

使用正则表达式或Java中最有效的方法解析以下划线分隔的字段字符串

使用正则表达式或Java中最有效的方法解析以下划线分隔的字段字符串,java,regex,parsing,Java,Regex,Parsing,我的标题可能有点误导。我可以轻松地手动解析字符串,但我正在寻找最快的方法来检测2个特定字段中的特定值。下面给出一个示例字符串: XXX_X_uu9999 999999 9999999 9999999 9999999 X_X其中X=alpha,9是数字,我想确认字段5和6中的值(日期)是一对特定年份中的一个 所以在字段5中,它可能是20100101,我想看看年份是否匹配几年中的一年。第6场相同,但年份不同。我想可能是两种不同的表达方式吧 我研究了一些使用regex扫描逗号分隔文件中的值的解决方案,

我的标题可能有点误导。我可以轻松地手动解析字符串,但我正在寻找最快的方法来检测2个特定字段中的特定值。下面给出一个示例字符串:

XXX_X_uu9999 999999 9999999 9999999 9999999 X_X其中X=alpha,9是数字,我想确认字段5和6中的值(日期)是一对特定年份中的一个

所以在字段5中,它可能是20100101,我想看看年份是否匹配几年中的一年。第6场相同,但年份不同。我想可能是两种不同的表达方式吧

我研究了一些使用regex扫描逗号分隔文件中的值的解决方案,但更改检查似乎没有像我预期的那样使用下划线(而不是关注特定字段,而是关注整个字符串)

同样,我可以通过拆分字符串,然后检查这两个字段来实现这一点,但我希望能做得更快,只需在运行中验证(一次性分析这些字符串的数量)特定值是否在字符串中的正确位置

例如:

XXX_X_100000_200000_20100101_20100130_X_X

我想将第一个日期(字段5)与2001年和2002年匹配

[编辑]


我应该注意到,我对正则表达式的使用非常糟糕,为了达到我的目的,我试图修改的正则表达式是:^([^,\r\n]*,){5}(2001 | 2002)

不要对任何事情都过度使用正则表达式

拆分字符串并对其进行传统解析没有什么错


当然,您也可以使用例如
(\d\d\d\d)(\d\d)(\d\d)
将正则表达式预拆分为YMD。尽管如此,如果某个东西应该是一个数字,请将其作为数字而不是字符串处理。

提供示例,而不是
Xs和9s
我不相信正则表达式会比简单的拆分和检查更快,但可能是这样。如果字符串总是采用相同的格式,那么正则表达式似乎就没有那么棘手了——也许这是一个很好的机会,可以让程序员学习其中一个更有用的工具?每次重击都要验证多少字符串?更新了标题。。。提供了更好的数据示例。如果字符串长度固定,则只需按位置将日期部分替换为子字符串即可。