gpt4 book ai didi

javascript - 正则表达式 - 如何计算 sql 文本中的单词?

转载 作者:行者123 更新时间:2023-11-30 16:24:34 26 4
gpt4 key购买 nike

我想计算 sql 文本中的 "CREATE" 字数,但我不想计算注释。

这是我的 PHP 正则表达式模式。但它不适用于 JavaScriptC#。 如何转换 JavascriptC# 正则表达式模式?我想在 JavascriptC#

上获得匹配计数

https://regex101.com/r/oB7pA2/7#pcre

此正则表达式模式不适用于 C#

var asd = Regex.Matches("CREATE TABLE TEST (COLUMNA NUMBER);", "(\\/\\*(?:(?!\\/\\*).|(?1))*?\\*\\/)(*SKIP)(*F)|^\\s*CREATE").Count;

enter image description here

最好的问候

最佳答案

最简单的方法是将过程分为三个步骤

1。删除评论

我只是快速测试了这个,但它似乎确实适用于我的嵌套评论测试用例。 您将要编写测试用例并证明此正则表达式适用于您的用例。

请注意,这并不“要求”关闭评论 */因为那可能会导致“灾难性的回溯”。如果在字符串中出现未关闭的注释时出错对您来说很重要,您应该为此编写一个单独的 RegEx。

正则表达式

(?:/\*(?:[^*/]+|\*[^/]|/[^*]|/\*(?:[^*/]+|\*[^/]|/[^*])*(?:\*/)?)*(?:\*/)?|-- [^\r\n]+)

https://regex101.com/r/sO5vR1/2

可视化

Regular expression visualization

代码

var modified = original.replace(/(?:\/\*(?:[^*\/]+|\*[^\/]|\/[^*]|\/\*(?:[^*\/]+|\*[^\/]|\/[^*])*(?:\*\/)?)*(?:\*\/)?|-- [^\r\n]+)/ig, "");

2。删除带引号的字符串

我们不想数CREATE如果它在带引号的字符串中

注意:如果您认为括号中可能包含单词 [,您可能还想处理括号 ( ] CREATE) .

正则表达式

'[^']*(?:''[^']*)*'|"[^"\\]*(?:\\.[^"\\]*)*"

https://regex101.com/r/rZ9nV7/1

可视化

Regular expression visualization

代码

modified = modified.replace(/'[^']*(?:''[^']*)*'|"[^"\\]*(?:\\.[^"\\]*)*"/ig, "");

3。计算“CREATE”的出现次数

代码

var count = (modified.match(/\bCREATE\b/ig) || []).length;

关于javascript - 正则表达式 - 如何计算 sql 文本中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310890/

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