回答
RS
代表记录分隔符,它值为30(或十六进制的0x1E)。你可以使用这个正则表达式:
\x1E([\w\s]*?)\x1E
匹配RS,然后匹配任何字母,数字或空格,然后再次RS。 ?
是为了使正则表达式匹配尽可能少的字符,以防以后有更多的RS字符。
如果您不想匹配数字,您可以使用[a-zA-Z\s]
而不是[\w\s]
。
例子:
string fileContents = "Something \u001Eyour string\u001E more things \u001Eanother text\u001E end.";
MatchCollection matches = Regex.Matches(fileContents, @"\x1E([\w\s]*?)\x1E");
if (matches.Count == 0)
return; // Not found, display an error message and exit.
foreach (Match match in matches)
{
if (match.Groups.Count > 1)
Console.WriteLine(match.Groups[1].Value);
}
正如你所看到的,你得到的Match
一个集合,每个match.Value
将整个匹配的字符串,包括分隔符。 match.Groups
将具有所有匹配的组,第一个是整个匹配字符串(默认情况下),然后是您的每个组(括号之间)。在这种情况下,你的正则表达式中只有一个,所以你只需要列表中的第二个。
这似乎工作,除了记录分隔符在行中出现四次。它只获取最后一对,并跳过第一对分隔符。 –
那么,你只是指定你想找到** a **字符串,并不是很多。有关您的场景的更多细节,更好的解决方:) – Andrew
我的歉意 - 后见之明我的问题并没有像应该得到的那样清楚 –
使用正则表达式,你可以做这样的事情:
string pattern = string.Format("{0}(.*){1}",firstString,secondString);
var matches = Regex.Matches(myString, pattern);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
//Do stuff, with the current you should remove firstString and secondString from the capture.Value
}
}
在使用Regex.match后发现与之前建立的模式相匹配的字符串。
记住要逃避所有正则表达式的特殊字符。
您可以使用Regex.Matches
,我使用X
在本例中隔板:
var fileContents = "Xsomething1X Xsomething2X Xsomething3X";
var results = Regex.Matches(fileContents, @"(X).*?(\1)");
的,你可以在results
循环做你想要的任何匹配。
正则表达式中的\1
表示“引用第一组”。我把已经所以这将是第1组X
之间()
,我将用\1
说,比赛在这个地方应该是完全一样的组1
你不需要正则表达式。
阅读文件内容(
File.ReadAllText
)。拆分分隔符(
String.Split
)。如果您知道只有一个字符串出现,请使用第二个数组元素(
result[1]
)。否则,请采取其他所有条目(result.Where((x, i) => i % 2 == 1)
)。
- 1. 查找由相同字符串分隔的字符串
- 2. AWK,不同的分隔符之间提取字符串
- 3. 引号之间的分隔字符串?
- 4. 正则表达式查找包含在两个字符之间的字符串,同时排除分隔符
- 5. 查找并替换由分隔符分隔的字符串
- 6. 查找某些列之间MySQL表相同的字符串值
- 7. 如何查找分隔字符串内的数字字符串
- 8. Javascript:检查字符串分隔符之间是否有空格
- 9. 查找并解析两个相同字符之间的字符串
- 10. 查找分隔字符串中的第n个字符串
- 11. 两个分隔符之间的字符
- 12. 用子串替换后续分隔符之间的字符串
- 13. PHP;如何删除分隔符和分隔符本身之间的字符串?
- 14. 在2个字符串之间查找字符串
- 15. 如何在Java中的两个分隔符之间找到一个字符串?
- 16. 如何在Autohotkey中分隔制表符分隔的字符串?
- 17. 查找字符串之间的差异
- 18. 查找字符之间的多串
- 19. 如何拆分vb.net中不同分隔符之间的字符串
- 20. 在两个分隔符之间删除字符串
- 21. 在嵌套分隔符之间标记字符串
- 22. 的Java字符串分割与demiliters之间连接的字符分隔符
- 23. 查找字符串集合中最相同的字符串
- 24. vb.net查找两个字符串之间的字符串
- 25. 查找2个字符串之间的字符串值
- 26. 查找两个字符串之间的所有子字符串
- 27. 分隔带分隔符的字符串
- 28. 试图找到字符串分隔符
- 29. 选择和显示字符/在C#.Net的分隔符之间的字符串
- 30. 正则表达式在分隔符之间查找两个以上的字符
扫描文件直到找到分隔符,然后读取直到下一个分隔符,然后停止。 –
此文件是否有多个这种字符串和分隔符? – Andrew
奇怪的是,你调用记录分隔符␞都是非ASCII和一个字段封装(我认为你把它当作引用)。它是ASCII码,我认为它被用作字段_separator._有几件事需要澄清:1)文件是什么编码? 2)␞也是一个Unicode字符,所以你会看到它是你读取文件内容的字符串。 3)你是否可以排除␞字符可能成为字段数据的一部分的可能性?如果不是,用什么策略来区分␞作为分隔符和␞作为数据? (Ref:[CSV](https://en.wikipedia.org/wiki/Comma-separated_values#Basic_rules)) –