l46*_*kok 11 .net c# regex string
假设我在文本文件中有以下文本
第一文
"一些文字"
"124arandom txt,不应该被解析!@
"124 Some Text"
"어떤글"
这篇文章不应该被解析
我想检索Some Text
,124 Some Text
并?? ?
作为匹配的字符串.文本逐行读取.Catch是,它必须匹配外语,如果它在引号内.
更新:我发现了一些奇怪的东西.我正在尝试一些随机的东西并发现:
string s = "?? ?"
Regex regex = new Regex("[^\"]*");
MatchCollection matches = regex.Matches(s);
Run Code Online (Sandbox Code Playgroud)
匹配的count = 10并且在其中生成了一些空项(解析后的文本在索引2中).当我正在做Regex.Replace时,这可能就是为什么我一直得到空字符串的原因.为什么会这样?
Tim*_*ker 22
如果你逐行阅读文本,那么正则表达式
"[^"]*"
Run Code Online (Sandbox Code Playgroud)
将找到所有引用的字符串,除非那些可能包含转义的引号,如"a 2\" by 4\" board"
.
要正确匹配这些,您需要
"(?:\\.|[^"\\])*"
Run Code Online (Sandbox Code Playgroud)
如果您不希望引号成为匹配项的一部分,请使用外观断言:
(?<=")[^"]*(?=")
(?<=")(?:\\.|[^"\\])*(?=")
Run Code Online (Sandbox Code Playgroud)
这些正则表达式,如C#正则表达式,可以像这样创建:
Regex regex1 = new Regex(@"(?<="")[^\""]*(?="")");
Regex regex2 = new Regex(@"(?<="")(?:\\.|[^""\\])*(?="")");
Run Code Online (Sandbox Code Playgroud)