Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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_Android - Fatal编程技术网

Java正则表达式匹配器匹配。(点)即使它不在模式中

Java正则表达式匹配器匹配。(点)即使它不在模式中,java,android,Java,Android,我想解析以分号分隔的字符串,它的末尾有或没有分号 我有正则表达式模式(\s*\w+)(\s*;)*,我将其解释为匹配: 0..n个空格,后跟1..n个字符,后跟以分号结尾的0..n个空格 我的问题是,如果输入字符串中有“.”,我会得到“错误匹配” 例如: 而不是预期的“0000.274283;”我得到“0000” 我缺少什么?\w匹配任何单词字符。因此,您正在匹配0-n个空格,后跟1个或多个字母、数字或下划线。由于不包括“.”,您的正则表达式将不会将字符串与其中的“.”相匹配,因此您只能得到00

我想解析以分号分隔的字符串,它的末尾有或没有分号

我有正则表达式模式
(\s*\w+)(\s*;)*
,我将其解释为匹配:

0..n个空格,后跟1..n个字符,后跟以分号结尾的0..n个空格

我的问题是,如果输入字符串中有“.”,我会得到“错误匹配” 例如:

而不是预期的“0000.274283;”我得到“0000”


我缺少什么?

\w匹配任何单词字符。因此,您正在匹配0-n个空格,后跟1个或多个字母、数字或下划线。由于不包括“.”,您的正则表达式将不会将字符串与其中的“.”相匹配,因此您只能得到0000而不是0000。274283

[^;]+
匹配除分号以外的所有内容,因此您可以使用此项将给定字符串按分号拆分。

\w与点字符不匹配。它与字母数字字符和下划线相匹配。您是否看到第二个捕获组后面的最后一个
*
?第一个捕获组匹配了
0000
,第二个捕获组匹配了0次。我在这里拼命地写正则表达式来解析这个字符串:“0000.274283;518600.00-F10W;0274283;04.09.2014;03.09.2017;0000274118;000110;13477”我知道我可以使用split,但我需要它是正则表达式(其他要求)。有什么建议吗?如果您需要匹配的某些数字中可以有“.”,您可以使用“?”使匹配“.”成为可选的。例如,如果我想匹配8位数字(即1234.1234或12341234),我可以匹配\d{4}\.?\d{4}
0000.274283;518600.00-F10W;