【问题标题】:Find string length using Regular Exrepssion使用正则表达式查找字符串长度
【发布时间】:2016-03-03 18:05:00
【问题描述】:

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

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

这是一个例子:-

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

对于以上行,我需要查看是否有 8 个字符串单个空格 分隔。

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

\w+(\s\w+){3}(\s(\w|\W)+){2}\s\d{10}\s\d+

那么我需要添加什么来检查字符串长度?

这是我目前看到的。

Regex Java Total String Length

Regex to match words of a certain length

编辑:-

我不想使用 split(" ") 函数,因为我将使用 regex 检查超过 100 万行。因此,如果我可以将长度检查与 regex 合并,我认为会更好。

编辑 2:-

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

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

这里aa aa 是我添加的额外字符串,它不会在当前正则表达式中引发错误。

【问题讨论】:

  • “字符串长度”是什么意思?字符数或空格分隔标记的数量?老实说,我也不会使用正则表达式进行测试。
  • 我知道我可以使用 string.split(" "); 。但如果我能用正则表达式做到这一点会更好。不使用正则表达式检查字符串长度的任何理由或好处。??? @5gon12eder
  • @mihir6692 可读性。拆分空格然后计算拆分数组中的非空字符串比正则表达式更具可读性和维护目的
  • @neomega 但我喜欢数百万行,所以我想我也会在正则表达式中添加长度检查。不知道它的方法是否正确。我还编辑了我的问题以避免混淆
  • @mihir6692 不要尝试预先优化。写一些简单的东西,如果它很慢,然后优化它。我正在做类似的事情,处理 6 亿行文件写入需要大约 30 秒。

标签: java regex string-length


【解决方案1】:

真的很简单,如果末尾的空格无关紧要,这个正则表达式将匹配:

^([^ ]+ ){8}$

如果是这样:

^([^ ]+ ){7}[^ ]+$

([^ ]) = 除了空格之外的任何内容

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

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

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

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 2016-07-04
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2021-09-15
    相关资源
    最近更新 更多