ABAP正则表达式中的贪婪/非贪婪量词

时间:2014-03-17 14:53:32

标签: regex abap

我想从这个字符串中提取2件事:| 2013.10.10 FEL felsz

  1. 正则表达式 - >日期字段 - >所需的值仅为2013.10.10(在本例中为)
  2. 正则表达式 - > 2013.10.10felsz字符串之间的字符串 - >所需的值只是FEL字符串(在本例中)。
  3. 我尝试使用以下正则表达式并没有太多成功:

    1. (.*?<p/\s>.*?)(?=\s)
    2. (.*?<p/("[0-9]+">.*?)(?=\s)
    3. 你有什么建议吗?

3 个答案:

答案 0 :(得分:1)

&#34; felsz&#34;变量?白色空间可以变化吗?您的日期格式可以变化吗?如果不是:

\| (\d{4}\.\d{2}\.\d{2}) (.*?) felsz

否则:

\|\s+?(\d{4}\.\d{2}\.\d{2})\s+?(.*?)\s+?[a-z]+

然后访问捕获组1/2。

答案 1 :(得分:1)

正则表达式

\d+\.\d+\.\d+

匹配给定字符串中的2013.10.10。说明和演示:http://regex101.com/r/bL7eO0

(?<=\d ).*(?= felsz)

应与FEL匹配。说明和演示:http://regex101.com/r/pV2mW5

如果你想要他们捕获组,你可以使用正则表达式:

\| (\d+\.\d+\.\d+) (.+?) .*

解释和演示:http://regex101.com/r/rQ6uU4

答案 2 :(得分:1)

假设FEL始终是一个单词(即由空格分隔),您可以使用以下表达式:

(\d{4}\.\d\d\.\d\d) ([^\s]+) (.*)