3
我有以下peoplecode可以使用peoplecode中的新窗口邏輯在新窗口中打開鏈接。下面的peoplecode和java函數完成這項工作,直到試圖從一個已經存在的新窗口打開一個新窗口,這個新窗口導致正則表達式添加一個錯誤的_newwin。正則表達式替換URL中的下劃線之後的所有內容
代碼
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;
這裏是我的問題:
我發現了一個正則表達式找到一個下劃線之前的一切。我想將它應用於來自正則表達式的第二組結果。
請讓我知道我該怎麼做。
對不起,如果我不清楚。這是發生了什麼事。如果有這樣的url http:// xxxxxxxxxxxxxx/psc/crdev_3/EMPLOYEE/CRM/c /結果是這樣的http:// xxxxxxxxxxxxxx/psc/crdev_3_newwin/EMPLOYEE/CRM/c /但是我想要這樣的東西http:// xxxxxxxxxxxxxx/psc/crdev_newwin/EMPLOYEE/CRM/c/ – Sat
我改變了你的正則表達式邏輯來做我想做的事情,它效果很好。非常感謝你的幫助。這是更改後的正則表達式。 (PS [CP])/([^ \/_] *)?(?:_ [0-9])???/([^ \ /] *)/([^ \ /] *)/( [csehtqwnf] {1}) – Sat