gpt4 book ai didi

c# - 如何使用正则表达式匹配引号中的字符串

转载 作者:可可西里 更新时间:2023-11-01 08:37:15 25 4
gpt4 key购买 nike

假设我在文本文件中有以下文本

第一个文本

“一些文字”

"124arandom txt 不应被解析!@

“124 一些文字”

“어떤글”

不应解析此文本a"s well

我想检索 Some Text124 Some Text어떤 글 作为匹配的字符串。文本逐行阅读。问题是,如果它在引号内,它也必须匹配外语。

更新:我发现了一些奇怪的事情。我正在尝试一些随机的东西,发现:

string s = "어떤 글"
Regex regex = new Regex("[^\"]*");
MatchCollection matches = regex.Matches(s);

匹配项的计数 = 10 并且在内部生成了一些空项(解析的文本在索引 2 中)。这可能是我在执行 Regex.Replace 时一直得到空字符串的原因。为什么会这样?

最佳答案

如果你逐行阅读文本,那么正则表达式

"[^"]*"

将查找所有带引号的字符串,除非它们可能包含转义引号,例如 "a 2\"by 4\"board"

要正确匹配那些,你需要

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

如果您不希望引号成为匹配的一部分,请使用 lookaround assertions :

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

这些正则表达式,作为 C# 正则表达式,可以像这样创建:

Regex regex1 = new Regex(@"(?<="")[^\""]*(?="")");
Regex regex2 = new Regex(@"(?<="")(?:\\.|[^""\\])*(?="")");

关于c# - 如何使用正则表达式匹配引号中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859442/

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