注释范围正则表达式
regex of comment out range
>我需要解析一些代码。
首先,我需要删除注释范围。
我使用javascript的拆分功能:
var ss = input.split(separator);
注释掉表示为
// .... 'n
/* .... */
什么是正则表达式的分隔符?
您可以使用
此regex
替换注释
var pattern=new RegExp("//.*?(?=[''n''r]+|$)|/[*].*?[*]/","g");
但请记住,如果字符串本身包含这些字符,它将不起作用
正如 zerkms 和 Anirudh 所建议的那样,字符串喜欢
var foo = "//it's not a comment";
是有问题的。
我想到的一个解决方案是
首先使用另一个正则表达式选择"字符串"。
在选定的"字符串"中,将注释符号的字符替换为一些古怪的字符串,例如"!@#$wacky 1","!@#$wacky 2" 等。
替换此问答的操作注释掉。
将"!@#$wacky"的重新系回//' 等。
做
编辑
感谢阿尼鲁德:
var regex = new RegExp("//.*?(?=[''n''r]+|$)|/[](.|'n)?[*]/","g");
工作代码
Array.prototype.last = function (n)
{
return this[this.length - 1 - n];
}
String.prototype.replaceAll = function (org, dest)
{
return this.split(org).join(dest);
}
var read = function (input)
{
var cmtprts = ['//', '/*', '*/', '(', ')'];
var cmtprtsE = cmtprts.map(function (s, i)
{
return "thisisareplacement" + i;
});
//==========================
var strgs = input.match(/"(?:[^''"]|''.)*"/ig);
var strgs1 = [];
var input1 = [];
// escape cmtprts during each Strings
if (strgs)
{
strgs.map(function (str, str_i)
{
var str1 = [];
cmtprts.map(function (mark, mark_i)
{
if (mark_i == 0)
{
str1[mark_i] = str.replaceAll(mark, cmtprtsE[mark_i]);
}
else
{
str1[mark_i] = str1[mark_i - 1].replaceAll(mark, cmtprtsE[mark_i]);
}
})
strgs1[str_i] = str1.last(0);
if (str_i == 0)
{
input1[str_i] = input.replaceAll(strgs[str_i], strgs1[str_i]);
}
else
{
input1[str_i] = input1[str_i - 1].replaceAll(strgs[str_i], strgs1[str_i]);
}
});
}
// comment out removing
var re2 = new RegExp("//.*?(?=[''n''r]+|$)|/[*](.|'n)*?[*]/", "g");
var input2 = input1.last(0).replaceAll(re2, '');
// "thisisareplacement"+i back to normal string
var input3 = [];
cmtprtsE.map(function (mark, mark_i)
{
if (mark_i == 0)
{
input3[mark_i] = input2.replaceAll(mark, cmtprts[mark_i]);
}
else
{
input3[mark_i] = input3[mark_i - 1].replaceAll(mark, cmtprts[mark_i]);
}
})
return input3.last(0);
}
相关文章:
- 是否可以扩展正则表达式元字符的范围
- 正则表达式检查循环中的 [A-Z] 范围
- 返回Javascript中给定正则表达式的文本范围数组
- 可以重构此数值范围的正则表达式吗
- 用于验证数字范围的正则表达式
- 正则表达式以匹配 HTML 范围标记中包含的多个单词
- 使用正则表达式验证特定范围
- 正则表达式表示用连字符分隔的浮点范围(用于年份和月份)
- 正则表达式捕获浮点数范围 (3.0 – 5.5)
- 正则表达式用于验证两个范围之间的数字
- 用于双精度数范围验证的正则表达式
- Javascript 正则表达式字符范围 A-z 匹配插入符号 (“^”)
- 正则表达式用于在 JavaScript 中查找任何两个数值(范围)之间的所有数字
- 正则表达式范围内的转义点
- 用于验证范围内十进制值的正则表达式是什么 - 0 到 99999.00
- 接受的正则表达式:字母、数字和一些长度范围的次要字符
- 限制正则表达式中捕获的范围
- javascript正则表达式验证范围内的年份
- 注释范围正则表达式
- 是否可以使用 Javascript 循环遍历正则表达式范围