gpt4 book ai didi

.NET 正则表达式匹配不正确

转载 作者:行者123 更新时间:2023-12-05 01:31:46 25 4
gpt4 key购买 nike

我正在尝试将带引号的字符串与被接受的文字引号相匹配,例如:

"消息\""

@"消息"

@(["'])[\S\s]*?\1|(["'])(?:\\\2|(?!\\\2)(?!\2).)*\2

但是为了

"message: \"" + message + "\"

.NET 中的内置 Regex 仅匹配 "message:\" 而不是 "message:\"" 根据在线匹配器,它应该像这样:

https://regexr.com/4173n

有谁知道如何让它正常工作?

.NET代码:

string pattern = "([\"'])[\\S\\s]*?\\1|([\"'])(?:\\\\\\2|(?!\\\\\\2)(?!\\2).)*\\2";
string test = "\"message: \\\"\" + message + \"\\\".\n";
MatchCollection matches = Regex.Matches(test, pattern);

最佳答案

您在模式中遗漏了一个 @ 并忘记转义文字反斜杠模式,该模式必须在常规字符串文字中包含 4 个反斜杠。

文字字符串正则表达式看起来像

@(["'])[\S\s]*?\1|(["'])(?:\\\2|(?!\\\2)(?!\2).)*\2

如果你想使用一个普通的字符串字面量

string pattern = "@([\"'])[\\S\\s]*?\\1|([\"'])(?:\\\\\\2|(?!\\\\\\2)(?!\\2).)*\\2";

或者一个逐字字符串文字,您只需要将一个 " 转义为另一个 ":

string pattern = @"@([""'])[\S\s]*?\1|([""'])(?:\\\2|(?!\\\2)(?!\2).)*\2";

关于.NET 正则表达式匹配不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52818758/

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