我有以下人员代码,可使用人员代码中的新窗口逻辑在新窗口中打开链接。下面的peoplecode和java函数可以完美地完成工作,直到尝试从一个已经存在的新窗口中打开一个新窗口,这将导致正则表达式再添加一个错误的_newwin。
码
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;
这是我的问题:
我找到了一个正则表达式,可以在下划线之前找到所有内容。我想将其应用于正则表达式结果的第二组。
请让我知道我该怎么做。
尝试这个
&sRegex = "/(ps[cp])/([^\/_]*)?(?:_newwin)?/([^\/]*)?/([^\/]*)?/([csehtqwnf]{1})/";
这将添加一个可选的_newwin,它不包含在组计数中。
如果您需要在第二场比赛中强调下划线,我们需要依靠贪婪...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句