回答
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)) –