Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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_String Length - Fatal编程技术网

Java 使用常规表达式查找字符串长度

Java 使用常规表达式查找字符串长度,java,regex,string-length,Java,Regex,String Length,我需要使用正则表达式检查字符串行 我可以验证行内容,但无法检查行长度是否为某个精确数字 以下是一个例子:- system WAS SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0 system WAS aa aa SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0 对于上面的行,我需要查看是否有8个字符串被单个空格隔开 我设计了正则表达式来检查上面的字符串 \w+(\s\w+){3}(\s(\w|\W)+){2

我需要使用正则表达式检查字符串行

我可以验证行内容,但无法检查行长度是否为某个精确数字

以下是一个例子:-

system WAS SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0
system WAS aa aa SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0
对于上面的行,我需要查看是否有8个字符串被单个空格隔开

我设计了正则表达式来检查上面的字符串

\w+(\s\w+){3}(\s(\w|\W)+){2}\s\d{10}\s\d+
那么我需要添加什么来检查字符串长度呢

这是我到目前为止看到的

编辑:-

我不想使用
split(“”)
函数,因为我将用正则表达式检查超过100万行。因此,如果我能将长度检查与正则表达式合并,我认为这会更好

编辑2:-

对于我当前的正则表达式,如果有超过8个元素,它将不会抛出错误。像这个例子:-

system WAS SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0
system WAS aa aa SP2 NA5 na10-xyz cpu,core-2,idle 1360294220 0

这里
aa
是我添加的额外字符串,它不会对当前的正则表达式抛出错误。

非常简单,如果末尾的空格不重要,这个正则表达式将匹配:

^([^ ]+ ){8}$
如果有:

^([^ ]+ ){7}[^ ]+$
([^])
=除了空白以外的任何内容

([^]+)
=不包含任何空格的单词

([^]+)
=后跟空格的单词


([^]+){7}
=7个单词,每个单词后面跟一个空格

你说的“字符串长度”是什么意思?字符数或空格分隔的标记数?老实说,我也不会使用正则表达式来测试。但如果我能用regex来做,那就更好了。不使用正则表达式检查字符串长度的任何原因或好处@5gon12eder@mihir6692可读性。对空格进行拆分,然后对拆分后的数组中的非空字符串进行计数,这比regexp可读性强得多,便于维护purposes@neomega但我喜欢数百万行,所以我想我也会在正则表达式中添加长度检查。不知道这是否是正确的方法。我还编辑了我的问题,以避免confusion@mihir6692不要试图事先优化。写一些简单有效的东西,如果速度慢,就优化它。我正在做类似的事情,用文件写入处理6亿行需要30秒。