Perhaps you can do this with complex regular expressions. I like the following method:
select substr(str, - instr(reverse(str), '.') + 1)
Nothing like testing to see that this does not work when the line is at the end. Something about - 0 = 0. Here is the improvement:
select (case when str like '%.' then '' else substr(str, - instr(reverse(str), ';') + 1) end)
EDIT:
Your example works when I run it in my local Oracle and SQL Fiddle .
I run this code:
select (case when str like '%.' then '' else substr(str, - instr(reverse(str), '.') + 1) end) from (select 'ThisSentence.ShouldBe.SplitAfterLastPeriod.Sentence' as str from dual) t
source share