繁体   English   中英

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

[英]How to match string in quotes using Regex

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

第一文

“一些文字”

“124arandom txt,不应该被解析!@

“124 Some Text”

“어떤글”

这篇文章不应该被解析

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

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

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

匹配的count = 10并且在其中生成了一些空项(解析后的文本在索引2中)。 当我正在做Regex.Replace时,这可能就是为什么我一直得到空字符串的原因。 为什么会这样?

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

"[^"]*"

将找到所有引用的字符串,除非这些字符串可能包含"a 2\\" by 4\\" board"类的"a 2\\" by 4\\" board"类的转义引号。

要正确匹配这些,您需要

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

如果您不希望引号成为匹配项的一部分,请使用外观断言

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

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

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

您可以使用正则表达式,然后尝试将其与您想要的任何文本进行匹配。 可以循环或任何你需要的。

string str = "\"your text\"";
//check for at least on char inside the qoutes
Regex r = new Regex("\".+\"");
bool ismatch = r.IsMatch(str); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM