извините, я не знаю ничего, кроме Python
но так как ваша проблема меня заинтересовала и что регулярные выражения более или менее одинаковы во всех языках, я предлагаю свое решение на Python
import re
pat = re.compile("(?:.*((?<!\d)(?:\d{5})(?!\d))|\Z).*")
gh = ("This is a 48593 test",
"This is a 48593 test 3255252",
"This 35542 is a 48593 test",
"i havent exactly 5 digits 34567654")
for x in gh:
print x
print 'AAA'+pat.search(x).groups("")[0]+'ZZZ'
print
Результаты
This is a 48593 test
AAA48593ZZZ
This is a 48593 test 3255252
AAA48593ZZZ
This 35542 is a 48593 test
AAA48593ZZZ
i havent exactly 5 digits 34567654
AAAZZZ
«AAA» и «ZZZ» не имеют никакой другой утилиты, чтобы показать, что четвертый результат дает «»
"" в группах ("") дает значение по умолчанию "" , когда нет совпадений
В противном случае четвертый результат будет Нет :
import re
pat = re.compile("(?:.*((?<!\d)(?:\d{5})(?!\d))|\Z).*")
gh = ("This is a 48593 test",
"This is a 48593 test 3255252",
"This 35542 is a 48593 test",
"i havent exactly 5 digits 34567654")
for x in gh:
print x
print pat.search(x).groups()[0]
print
результаты в
This is a 48593 test
48593
This is a 48593 test 3255252
48593
This 35542 is a 48593 test
48593
i havent exactly 5 digits 34567654
None