Regex, file path, and backreference. Awwwwww, yeah.. cue the Barry White music.

Jun 14, 2016 Jun 14, 2016

Copy link to clipboard


Hello, all,

I'm using regex (REreplaceNoCase()) to set the file path of the root of a site that I'm working on.  Until now, it has worked great.

What I'm doing is using ExpandPath() to set an application variable in application.cfc so that no matter what folder under the webroot is being used, the variable will always have the same value, no matter if on DEV, Staging, or Production environment.

So, let's say one server in each environment:  ServerA, ServerB, ServerC, respectfully.

The webroot on ServerA is C:\web\webdocs\myproject\

The webroot on ServerB is C:\web\webdocs\myproject\preview\

The webroot on ServerC is F:\hosting\www\public_html\myproject\docs\

I need a regex mask to point to the root on all three servers without hardcoding it, because, you know.. things are constantly changing, and you don't always know that paths will remain as is.

The following _kind of_ works:

<cfset application.wrmap = REreplaceNoCase(ExpandPath('./', (.+[\\|\/]myproject[\\|\/])(.+)', '\1','all') />

So.. no matter which server I'm on, the wrmap variable will point to [drive]:\path\to\myproject.  But I need to get it to point to that plus /preview on one server, and /docs on another.

I've tried:

<cfset application.wrmap = REreplaceNoCase(ExpandPath('./', (.+[\\|\/]myproject([\\|\/][docs|preview])?[\\|\/](.+)', '\1','all') />

But it doesn't see /docs or /preview.  Does anyone have any ideas, on this?









Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
no replies

Have something to add?

Join the conversation