gpt4 book ai didi

c# - c#中保留字符的正则表达式问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:47 25 4
gpt4 key购买 nike

我有一个有效的正则表达式,它扫描一大块文本以查找在数据库中定义的关键字列表。我从数据库动态创建我的正则表达式来得到这个:

\b(?:keywords|from|database|with|esc\@ped|characters|\@ss|gr\@ss)\b

注意特殊字符被转义了。这适用于绝大多数情况,除非关键字的第一个字符是正则表达式特殊字符,如 @ 或 $。所以在上面的例子中,@ss 不会被匹配,但是 gr@ss 和 esc@ped 会。

有什么想法可以让这个正则表达式适用于这些特殊情况吗?我尝试过转义和不转义正则表达式字符串中的特殊字符,但无济于事。

提前致谢

大卫

最佳答案

new Regex(@"(?<=^|\W)(?:keywords|from|database|with|esc@ped|characters|@ss|gr@ss)(?=\W|$)")

将匹配。它检查要匹配的关键字前后是否有非单词字符(或字符串的开头/结尾)。我选择 \W 而不是 \s 因为标点符号和其他可能构成单词边界的非单词字符。

编辑:甚至更好(感谢 Alan Moore!- 两个版本将产生相同的结果):

new Regex(@"(?<!\w)(?:keywords|from|database|with|esc@ped|characters|@ss|gr@ss)(?!\w)")

两者都无法匹配 l@ss 中的 @ass,这可能正是您想要的。

关于c# - c#中保留字符的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887207/

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