Я пытаюсь написать выражение Regex, которое будет соответствовать сложному числу условий. Я пытаюсь извлечь число, которое следует после ABC
, но может быть несколько мест, где ABC 1234
появляется в моей строке. Я также должен учитывать, когда номер используется без ABC
, но следует за ним. Например, ABC 1234 / 1134
или ABC 1234-1134
, или что-то еще между двумя числами, например and
.
Строки, которые я пытаюсь найти, выглядят примерно так:
ABC-210293CompletedReports // Should match: ABC-210293
CC517036submittedbyfoobarforABC105799WRS877565 // Should match: ABC105799
ABC#86765 // Should match: ABC#86765
abc99220 / 103743 // Should match: ABC99220 / 103743
AbC99220/103743 // Should match: ABC99220/103743
ABC 123 and 1123 // Should match: ABC 123 and 1123
SubmittedbyFooBar.forABC106156.Solutionbuilton4/23/20184:22PM // Should match: ABC106156
Прямо сейчас, я это регулярное выражение:
((?i)ABC.(?-i))(\d[0-9]{0,10})|( *(\/|-|(?i)AND(?-i)) *\d[0-9]{0,10})
будет соответствовать каждой из указанных выше строк, кроме последней. Он будет соответствовать ABC106156
, но также будет соответствовать /23
и /20184
в разделе 4/23/20184:22PM
. Я не знаю, как исключить /
без потери соответствующих выражений abc99220 / 103743
и AbC99220/103743
.
Я слышал о взгляде вокруг, но я не знаю, как это сделать. Как я могу игнорировать даты в этом выражении регулярного выражения?