I have the following peoplecode to open a link in new window using new window logic in peoplecode. The following peoplecode and java functions does the job perfectly until a new window is tried to open from an already existing new window which causes the regular expresssion to add one more _newwin which is wrong.
Code
Function FgNewWinUrl(&strUrl As string) Returns string;
Local string &sRegex, &sReplace, &Result;
/* Declare java object */
Local JavaObject &jUrl;
/**
* Peoplesoft Content types:
* -------------------------
* Component: c
* Script: s
* External: e
* Homepage: h
* Template: t
* Query: q
* Worklist: w
* Navigation: n
* File: f
**/
/* Regex strings */
/* psc/psp Site Portal Node Content Type */
rem &sRegex = "/(ps[cp])/([^\/]*)?/([^\/]*)?/([^\/]*)?/([csehtqwnf]{1})/";
&sRegex = "/(ps[cp])/([^\/]*)?/([^\/]*)?/([^\/]*)?/([csehtqwnf]{1})/";
rem ^[^_]+(?=_);
&sReplace = "/$1/$2_newwin/$3/$4/$5/";
/* Instantiate objects and replace */
&jUrl = CreateJavaObject("java.lang.String", &strUrl);
&Result = &jUrl.replaceAll(&sRegex, &sReplace);
/* Return modified URL */
Return &Result;
End-Function;
Here is my question:
I found a regex to find everything before an underscore. I want to apply that to the second group of the result from regex.
Please let me know how I can do that.
Try this
This adds an optional _newwin that is not inclueded in the group count.
If you have to support underscores in the second match we need to rely on greediness…