将字符串拆分为数组而不删除定界符ruby

时间:2020-06-24 11:36:13

标签: regex ruby

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

"@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"]

1 个答案:

答案 0 :(得分:0)

您可以将以下正则表达式与.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

相关问题