gpt4 book ai didi

c++ - 源代码注释的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:51 25 4
gpt4 key购买 nike

是否有正则表达式匹配任何行注释,但避免字符串内的注释?我需要 // 之后的一行中的所有内容(包含 //)

例如:

//Comment (match!)
bla bla bla bla //Comment (match!)
this string "foo // foo" (don't match because it's inside "")

最佳答案

以下regular expression将正确匹配输入中的任何字符串和正则表达式:

var strings = /("((.|\\\n)*?([^\\"]|\\\\)|)"|'((.|\\\n)*?([^\\']|\\\\)|)'|\/[^*](.*([^\\\/]|\\\\))\/|\/\*\/)/g;

您可以从输入中删除字符串,然后使用 another regular expression 匹配注释:

var comments = /((\/\/)(.*)|(\/\*)((.|\n)*)(\*\/))/g;
input.replace(strings, "").match(comments);

var strings = /("((.|\\\n)*?([^\\"]|\\\\)|)"|'((.|\\\n)*?([^\\']|\\\\)|)'|\/[^*](.*([^\\\/]|\\\\))\/|\/\*\/)/g,
comments = /((\/\/)(.*)|(\/\*)((.|\n)*)(\*\/))/g;

function update() {
var arr = input.value.replace(strings, "").match(comments);
output.value = arr ? arr.join("\n") : "";
}

input.onkeydown = input.onkeyup = input.onchange = update;
update();
textarea {
width: 90%;
height: 5em;
}
<p>Input:</p>
<textarea id="input">
//Comment (match!)
bla bla bla bla //Comment (match!)
this string "foo // foo"
</textarea>

<p>Output:</p>
<textarea id="output">
</textarea>

关于c++ - 源代码注释的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com