通过正则表达式在 ABAP 中提取日期和时间

Extract Date and Time in ABAP via Regex

我想使用 REGEX 将时间和日期与该字符串分开,因为我觉得这是唯一可以分开的方法。但我不太熟悉如何做,也许有人可以帮助我。

原字符串:Your item was delivered in or at the mailbox at 3:34 pm on September 1, 2016 in TEXAS, MT 59102

我想要的输出achieve/populate:

这是我尝试编写的代码,但我只能这样剪切它:

这是我目前的代码:

DATA: lv_status TYPE string,
      lv_time   TYPE string,
      lv_date  TYPE string,
      lv_off    TYPE i.

lv_status = 'Your item was delivered in or at the mailbox at 3:34 pm on September 1, 2016 in TEXAS, MT 59102.'.
FIND REGEX '(\d+)\s*(.*)' IN lv_status SUBMATCHES lv_time lv_date MATCH OFFSET lv_off.
lv_status = lv_status(lv_off).

你要的,它来了:

\b((1[0-2]|0?[1-9]):([0-5][0-9]) ([AaPp][Mm])) on (January|February|March|April|May|June|July|August|September|October|November|December)\D?(\d{1,2}\D?)?\D?((?:19[7-9]\d|20\d{2})|\d{2})

它接受 HH:MM am/pm 格式的时间和 Jan-Dec, dd 1970-2999 格式的日期。 每个部分都在自己的组中捕获。

该演示显示了一个允许缩写月份名称的版本:

Demo