【问题标题】:regEx with JavaScript带有 JavaScript 的正则表达式
【发布时间】:2011-11-20 11:15:18
【问题描述】:

我想通过解析 txt 文件得到刺痛,我的字符串是:

[INFO] Total time: 12 minutes 10 seconds

我只需要“12分10秒”

我的表达是:

/Total time: [0-9]* minute[a-z]* [0-9]* second[a-z]*/

效果很好,但如果刺痛只有 1 分钟,它就不起作用了……

如何在“总时间:”之后获得所有刺痛?

【问题讨论】:

  • 这不是一个很有用的评论,@Esailija
  • @KaeVerens,我发誓我几天前看到了完全相同的问题、正则表达式和匹配的字符串:D 虽然找不到它,但它没有比这更多的重复:P
  • @Roman - 如果您需要以“12”开头的部分(在您的示例中),为什么您的正则表达式包括“总时间:”?您是否希望输出中出现“总时间:”字样?

标签: javascript regex parsing


【解决方案1】:

试试这个:

/Total time: ([0-9]* minutes?)?( ?[0-9]* seconds?)*/

您需要 ? 来匹配前面的 0 或 1。

【讨论】:

  • 我更喜欢你的解决方案而不是我自己的解决方案:总时间:[0-9]* 分钟[a-z]* [0-9]* 秒[a-z]*|[0-9]* 分钟[a-z]*
  • 太棒了!但是.. 如果字符串只包含秒呢?例如。总时间:22 秒?
  • 缺少space 匹配项。查看更新后的表达式
【解决方案2】:

您可以将秒部分变成一个子组,并通过“?”使其成为可选

/Total time: [0-9]* minutes?( [0-9]* seconds?)?/

【讨论】:

  • +1 是第一个在“分钟”和“秒”中修正可选“s”的人。
【解决方案3】:

假设这条线是line

line=line.replace(/^\[INFO\] Total time: /, '');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多