Цель состоит в том, чтобы сохранить кардинальные и порядковые номера в начале строки, если они находятся непосредственно перед словом PERFORMANCE
или SCORE
:
#These numbers are kept:
100 SCORE FOR STUDENT
80 PERFORMANCE FOR TEACHER
Однако, если числа в начале и следующее слово отличается, то их следует удалить:
#These numbers are removed
10095TH 10097TH 179TH SCHOOL ANIVERSARY
11 12 10 SECONDARY LEVELS
100 100 100 100 SCHOOL AGREEMENT
У меня возникает проблема, когда перед словом PERFORMANCE
или SCORE
стоят цифры, разделенные пробелом:
#All numbers should be kept
3 10 100 PERFORMANCE
001 10 12345 SCORE
Я применяю следующее регулярное выражение, но последний раздел запутан (?!\s*\d*\s*\d*\s*(?:PERFORMANCE|SCORE)\b)
, потому что в настоящее время он рассматривает только 3 набора чисел до сохранения PERFORMANCE
или SCORE
:
(?<=[A-Za-z]\b )([ 0-9]*(ST|[RN]D|TH)?\b)|^(([\d ]+(ST|[RN]D|TH)?)*\b)(?!\s*\d*\s*\d*\s*(?:PERFORMANCE|SCORE)\b)
Предыдущее регулярное выражение работает для следующего:
3 10 100 PERFORMANCE
001 10 12345 SCORE
Но оно не будет работать, если я добавлю дополнительный набор цифр:
3 10 100 1 PERFORMANCE
001 10 1 12345 SCORE
Как можно обобщить это правило включить весь набор цифр?
Спасибо