This will work for the titlecase and whatnot. You'll still need to run the rereplaces twice each to handle the dreaded "ben ben" problem. But it's basically a good approach.
-- Ben Doom Programmer & General Lackey Moonbow Software, Inc : -----Original Message----- : From: Andre Mohamed [mailto:[EMAIL PROTECTED] : Sent: Wednesday, June 04, 2003 11:01 AM : To: CF-Talk : Subject: RE: Regex replacing whole words : : : Standing on the shoulders of giants a very quick and dirty way of : dealing with the case issue: : : <cfset oldname="ben"> : <cfset newname="mike> : <cfset : t=rereplace(str,"(^|[^[a-zA-Z]]?)#oldName#([^[a-zA-Z]]?|$)","\1#newName# : \2","ALL")> : : <cfset oldname="Ben"> : <cfset newname="Mike"> : <cfset : t=rereplace(str,"(^|[^[a-zA-Z]]?)#oldName#([^[a-zA-Z]]?|$)","\1#newName# : \2","ALL")> : : i.e. not using REReplaceNoCase, just REReplace. : : André : : : -----Original Message----- : From: Jerry Johnson [mailto:[EMAIL PROTECTED] : Sent: 04 June 2003 15:46 : To: CF-Talk : Subject: Re: Regex replacing whole words : : This gets you part of the way: : : <cfset oldname="ben"> : <cfset str="Ben lives in benland. But ben is actually not called ben. : He's called ben-dabble."> : <cfset newname="mike"> : : <cfset : t=rereplaceNoCase(str,"(^|[^[a-zA-Z]]?)#oldName#([^[a-zA-Z]]?|$)","\1#ne : wName#\2","ALL")> : : <cfoutput>#t#</cfoutput> : : : Note that it does not retain the proper capitalization from the : original, but instead uses the name as supplied by newName. : : To get the proper capitalization, I think you will either need to run : through every permutation of capitalization as different case-specific : regex, or do a find-and-replace instead. : : Ninja, any ideas here? : : Jerry Johnson : : >>> [EMAIL PROTECTED] 06/04/03 10:34AM >>> : I can't get my head around regular expressions! Help me please before I : go mad! : : I need to replace one word with another, matching cases (if possible), : but in a smart way. eg. : : "Ben lives in benland. But ben is actually not called ben. He's called : ben-dabble" : : Say I want to replace 'ben' (any case) with 'mike', I would like to get: : : "Mike lives in benland. But mike is actually not called mike. He's : called mike-dabble" : : Note the punctuation - I only want whole words, or words which are : surrounded by punctuation. Does that make sense? : : I know I'm asking a lot but doing it using normal code and replace() is : a slow operation. Even a reg-ex which will just replace whole words : (including if they're at the beginning or end of a string) would be : fantastic. I could do 2 regexs to do the case-matching, if it's not : possible to do it in 1. : : Many Thanks! : : : : : --------------------------------- : Yahoo! Plus - For a better Internet experience : : : : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4 FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Host with the leader in ColdFusion hosting. Voted #1 ColdFusion host by CF Developers. Offering shared and dedicated hosting options. www.cfxhosting.com/default.cfm?redirect=10481 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4