Вот ссылка на regex101.com: https://regex101.com/r/fu2JkM/1
Каждый пример, кроме 100 CCC or 200 DDD keyword 300 someotherword
, работает нормально: он должен найти последнее число , за которым следует A или BB илиCCC или DDD до ключевое слово .
В приведенном выше примере должно быть найдено ключевое слово 200 DDD , поэтому group1 = 200 и group2 = DDD , за которым сразу следует ключевое слово.Это не работает, потому что после ключевое слово есть какое-то число, но я бы хотел, чтобы эти случаи также работали.Может кто-нибудь помочь?
РЕДАКТИРОВАТЬ: Текущее регулярное выражение: (?:.*[^\d\n])?([0-9][0-9,.]*)(?:\s*(A|BB|CCC|DDD))?\s+keyword
Примеры с ожидаемыми результатами:
200A keyword -> 200A
200BB keyword -> 200BB
200 BB keyword -> 200 BB
100 QQQ or 200 BB keyword -> 200 BB
100 CCC or 200 DDD keyword -> 200 DDD
100 CCC or 200 DDD keyword -> 200 DD
100 CCC or 200 DDD keyword 300 someotherword -> 200 DDD
100 CCC or 200 DDD keyword someotherword -> 200 DDD
1.5 CCC keyword -> 1.5 CCC
0,25 CCC keyword -> 0,25 CCC