Now that I look more closely, the ? is wrong (good catch!) and you've got too many brackets. However, that still doesn't fix the benben problem, as I explained in another email.
The re should be (^|[^a-zA-Z])#oldName#([^a-zA-Z]|$) Note that the a-zA-Z is not in a second set of brackets. -- Ben Doom Programmer & General Lackey Moonbow Software, Inc : -----Original Message----- : From: Jerry Johnson [mailto:[EMAIL PROTECTED] : Sent: Wednesday, June 04, 2003 11:12 AM : To: CF-Talk : Subject: RE: Regex replacing whole words : : : Nice touch. Handles the two most obvious cases. : : OK, I made a mistake, which explains the "ben ben" non-find. : : Get rid of the ? in both [^[a-zA-Z]] checks. : : <cfset oldname="ben"> : <cfset newname="mike> : <cfset : newStr=rereplace(str,"(^|[^[a-zA-Z]])#oldName#([^[a-zA-Z]]|$)","\1 : #newName#\2","ALL")> : : <cfset oldname="Ben"> : <cfset newname="Mike"> : <cfset : newStr=rereplace(newStr,"(^|[^[a-zA-Z]])#oldName#([^[a-zA-Z]]|$)", : "\1#newName#\2","ALL")> : : Jerry Johnson : : : >>> [EMAIL PROTECTED] 06/04/03 11:01AM >>> : 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. : : AndrT : : : -----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 Your ad could be here. Monies from ads go to support these lists and provide more resources for the community. http://www.fusionauthority.com/ads.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4