正则表达式捕获日期和小时以及字符串上的int

时间:2017-11-21 08:02:08

标签: regex

有这个字符串:

File: `myfile.txt'
  Size: 310624485   Blocks: 606704     IO Block: 131072 regular file
Device: 13h/19d Inode: 14942600    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-11-21 06:00:31.293377534 +0100
Modify: 2017-11-21 06:01:33.203998797 +0100
Change: 2017-11-21 08:53:41.563936838 +0100
 Birth: -

我想获得两个捕获组:

  • 上述示例Size
  • 310624485以外的数字
  • Modify以外的日期和小时,直到点,在上面的例子中2017-11-21 06:01:33

我使用以下正则表达式得到了第一组:
Size: (0|[1-9][0-9]*)

但我无法获得Modifty

有人可以帮助我,告诉我如何才能获得两个捕获组,这里是正则表达式:https://regex101.com/r/wdoqDn/1

2 个答案:

答案 0 :(得分:1)

解决修改你可以使用 (Modify: )([0-9]{4}\-[0-9]{2}\-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2})

正如评论中提到的捕捉大小的人使用更简单的正则表达式,例如(Size: )(\d+)

Java版:

(Modify: )([0-9]{4}\\-[0-9]{2}\\-[0-9]{2}\\s[0-9]{2}\\:[0-9]{2}\\:[0-9]{2})

(Size: )(\\d+)

答案 1 :(得分:0)

我将@ TG的答案加上评论中的信息结合起来 我错过的是|分隔符。

Size: ([0-9]+)|Modify: ([0-9]{4}\-[0-9]{2}\-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2})