regex - Regular expression to find position of the last alpha character that is followed by a space? -


i using coldfusion 10. need use regular expression , need help.

i have lengthy content (up 8,000 characters) , want create teaser. after length (which define elsewhere), want find last alpha character followed space. remove after character. add ellipsis (...)

mystring = "the lazy brown fox not dog." 

in case, delete after "a" precedes "dog".

mystring = "there 123 boxes on hill, says 612 guy." 

in case, delete after "that" precedes "612 ".

mystring = "i fell down stairs on june 30th, 1962." 

in case, delete after "june" precedes "30th".

what regular expression use find position of last alpha [a-z] character followed space?

myreg = ""; lastposition = refindnocase(myreg, mystring); 

i'm not sure refindnocase, think can try rereplacenocase. hope cf can take references regex engines do:

rereplacenocase(mystring, "(.*\b[a-za-z]+\b)\s.*", "$1", all); 

edit: backreference, appears use backslash instead of dollar sign:

rereplacenocase(mystring, "(.*\b[a-za-z]+\b)\s.*", "\1", all); 

and if goes well, should have this.

.* matches besides newline character, \b matches word boundaries, [a-za-z]+ alphabet characters , \s space after it.

the greediness of first .*'s being exploited here capture as possible until last word followed space.

and guess can add ellpses after $1 so:

rereplacenocase(mystring, "(.*\b[a-za-z]+\b)\s.*", "\1 (...)", all) 

if want use refind(), maybe use this:

refindnocase("[a-za-z](?:\s\d+|\w+,)*\s[^\s]+\.$", mystring); 

note haven't tested against other possible scenarios, tried few don't work above one:

refindnocase("[a-za-z](?:\s\d+|\s?\w+[,.-]+)*\s[^\s]+[.\s]*$", mystring); 

and few test subjects: link.

refind give position of last alpha character. can add 1 position of space in original string.


Comments