【问题标题】:split string into array without deleting delimiter ruby将字符串拆分为数组而不删除分隔符 ruby
【发布时间】:2020-10-14 15:49:23
【问题描述】:

我是红宝石新手。我需要根据正则表达式模式将字符串拆分为数组并保留分隔符。 比如我有一串日志

"@2019-01-09 09:01:05,333 ERROR-Log Message
@2019-01-09 09:01:05,333 ERROR-Log Message
@2019-01-09 09:01:05,333 WARNING-Log Message
@2019-01-09 09:01:05,333 WARNING-Log Message"

my regex pattern is /^(@[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}).*/

我想得到这样的东西

["@2019-01-09 09:01:05,333 ERROR-Log Message", "@2019-01-09 09:01:05,333 ERROR-Log Message", "@2019-01-09 09:01:05,333 WARNING-Log Message", "@2019-01-09 09:01:05,333 WARNING-Log Message"]

【问题讨论】:

  • 你不想用换行符分割吗?
  • 还是用/(?!\A)(?=^@\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2},\d{3})/拆分?
  • 感谢您的帮助。它现在对我有用。

标签: regex ruby


【解决方案1】:

您可以将以下正则表达式与.split 一起使用:

/(?!\A)(?=^@\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2},\d{3})/

它是两个前瞻的组合:

  • (?!\A) - 不在字符串的开头
  • (?=^@\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2},\d{3}) - 行位置的开头,后面是与 @ 匹配的 @\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2},\d{3} 模式,然后是类似日期的模式,然后是空格,然后是类似时间的模式。

请参阅regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2023-04-08
    • 2016-11-14
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多