通过Regex在ABAP中提取日期和时间

时间:2018-06-06 18:59:33

标签: regex sap abap

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

原始字符串:

“您的商品已于2016年9月1日下午3:34在TEXAS,MT 59102中邮寄或邮箱发送”

我希望实现/填充输出:

lv_time =下午3:34

lv_date = 2016年9月1日

这是我试图做的代码,但我只能这样做:

lv_status =您的商品已在

中的邮箱中或邮箱中递送

lv_time = 3

lv_date =:2016年9月1日晚上34点,在MTXAS,MT 59102。

这是我到目前为止的代码:

    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).

1 个答案:

答案 0 :(得分:3)

你问过它,来了:

\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