我在正则表达式下面尝试从其中捕获一些字符串:
"CallbackFnCreate_[\W]{4}(.*?[^\w-])
Required Output should be : /TestResult_20190604-120620 (Capture
TestResult_20190604-120620 and append "/" in the beginning)
我的第1组输出是:TestResult_20190604-120620“
1|#||4|3952|updatePanel|WorkflowFileExplorer_ajaxPanel|<div `id="WorkflowFileExplorer_pbContainer" style="width:0px;height:0px;overflow:hidden;position:relative;"><input type="button" name="WorkflowFileExplorer$pb" value="pb" onclick="javascript:__doPostBack('WorkflowFileExplorer$pb','')" id="WorkflowFileExplorer_pb" tabindex="-1" /><input name="WorkflowFileExplorer$postbackArgument" type="hidden" id="WorkflowFileExplorer_postbackArgument" value="CallbackFnCreate_/***TestResult_20190604-120620" /></div><div id="WorkflowFileExplorer_tree" class="RadTreeView RadTreeView_Default">`
答案 0 :(得分:1)
我的猜测是,我们希望仅进行替换并稍微修改原始表达式:
.+("CallbackFnCreate_\/\*\*\*(.+?)").+
我们期望的输出在此捕获组中
(.+?)
const regex = /.+("CallbackFnCreate_\/\*\*\*(.+?)").+/gm;
const str = `1|#||4|3952|updatePanel|WorkflowFileExplorer_ajaxPanel|<div \`id="WorkflowFileExplorer_pbContainer" style="width:0px;height:0px;overflow:hidden;position:relative;"><input type="button" name="WorkflowFileExplorer\$pb" value="pb" onclick="javascript:__doPostBack('WorkflowFileExplorer\$pb','')" id="WorkflowFileExplorer_pb" tabindex="-1" /><input name="WorkflowFileExplorer\$postbackArgument" type="hidden" id="WorkflowFileExplorer_postbackArgument" value="CallbackFnCreate_/***TestResult_20190604-120620" /></div><div id="WorkflowFileExplorer_tree" class="RadTreeView RadTreeView_Default">\`
`;
const subst = `\/$2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
答案 1 :(得分:1)
只需使用括号即可捕获相关部分,并在替换时附加“ /”。
var re = /.+"CallbackFnCreate_\/\W{3}([^"]+).+/;
var text = '1|#||4|3952|updatePanel|WorkflowFileExplorer_ajaxPanel|<div `id="WorkflowFileExplorer_pbContainer" style="width:0px;height:0px;overflow:hidden;position:relative;"><input type="button" name="WorkflowFileExplorer$pb" value="pb" onclick="javascript:__doPostBack('WorkflowFileExplorer$pb','')" id="WorkflowFileExplorer_pb" tabindex="-1" /><input name="WorkflowFileExplorer$postbackArgument" type="hidden" id="WorkflowFileExplorer_postbackArgument" value="CallbackFnCreate_/***TestResult_20190604-120620" /></div><div id="WorkflowFileExplorer_tree" class="RadTreeView RadTreeView_Default">`';
var res = text.replace(re, '/$1')
console.log(res)
答案 2 :(得分:1)
您可以使用捕获组,并在替换位置中在第一个捕获组之前使用正斜杠。
"CallbackFnCreate_\/\*{3}([^"]+)(?=")
说明
"CallbackFnCreate_
字面上匹配\/\*{3}
匹配/
和3次*
(
捕获组1
[^"]+
匹配1次以上而不是"
)
关闭捕获组(?=")
断言右边是"
const regex = /"CallbackFnCreate_\/\*{3}([^"\n]+)(?=")/;
const str = `1|#||4|3952|updatePanel|WorkflowFileExplorer_ajaxPanel|<div \`id="WorkflowFileExplorer_pbContainer" style="width:0px;height:0px;overflow:hidden;position:relative;"><input type="button" name="WorkflowFileExplorer\$pb" value="pb" onclick="javascript:__doPostBack('WorkflowFileExplorer\$pb','')" id="WorkflowFileExplorer_pb" tabindex="-1" /><input name="WorkflowFileExplorer\$postbackArgument" type="hidden" id="WorkflowFileExplorer_postbackArgument" value="CallbackFnCreate_/***TestResult_20190604-120620" /></div><div id="WorkflowFileExplorer_tree" class="RadTreeView RadTreeView_Default">\``;
let res = str.match(regex);
console.log("/" + res[1]);
答案 3 :(得分:0)
const unformattedName = 'CallbackFnCreate_/***TestResult_20190604-120620"';
const found = unformattedName.match(/CallbackFnCreate_(\/)[\W]{3}(.*?[^\w-])/);
document.write(found[1]+found[2]);
下面有更多说明。...
1)(/)\是反斜杠,用于转义“ /”,因为/是正则表达式中的特殊字符,它告诉javascript这只是一个字符串,而不是特殊字符。因此,“ /”是匹配的。
2)[\ W] {3} ---这不是一个分组,因为它不在方括号中。 [\ W]表示捕获任何非单词[\ W] {3}表示捕获三个连续的非单词,在您的情况下为***。
3)(。?[^ \ w-])-----。表示捕获除换行符之外的任意数量的字符。从字面上看,它旨在捕获除“?”以外的所有字符。使它变得懒惰。?因此,这意味着它应该捕获所有字符,但应尝试将其最小化。 [^ \ w-]表示它应捕获不是单词的任何字符,即[a-zA-Z0-9_],也不应捕获“-”。因此。?[[^ \ w-]-表示捕获所有字符,但在第一个非单词字符之后停止--这是第2组。
4)组1-将输出= / 组2 –将输出='TestResult_20190604-120620“';