& # 39; $ & # 39;在Regex中查找换行或不在c#中
本文关键字:Regex 查找 换行 | 更新日期: 2023-09-27 18:10:08
当我执行这段代码时,我得到了一些有趣的结果。
string readText = File.ReadAllText("d:''temp.txt");
Console.WriteLine(readText);
Console.WriteLine("From File: "+Regex.Matches(readText,"$").Count);//-->2
Console.WriteLine("Add ''n to the File: "+Regex.Matches(readText + "'n", "$").Count);//--->2
Console.WriteLine("Add multiple ''n to the file: "+Regex.Matches(readText + "'n'n'n", "$").Count);//--->2
Console.WriteLine("on Text '"sample'": "+Regex.Matches("sample", "$").Count);//--->1
Console.WriteLine("on Text '"sample''n''n''n'": "+Regex.Matches("sample" + "'n'n'n", "$").Count);//--->2
输出:First line
third
Line 6
Line 7
From File: 2
Add 'n to the File: 2
Add multiple 'n to the file: 2
on Text "sample": 1
on Text "sample'n'n'n": 2
为什么它给我这样的结果。有人能解出这个吗?
$
在两个可能的位置匹配:(滚动到"以换行结束的字符串"一节)
- 在输入字符串和 的末尾如果字符串以换行符结束,则将
- 放在字符串中最后一个换行符之前的位置。
所以如果你的字符串以一个或多个换行符结束,你得到两个匹配$
。在其他情况下,你得到一个。
如果您只想匹配字符串的结尾,请使用'z
。
Python中的一个实验:
>>> [match.start() for match in re.finditer("$", "hello")]
[5]
>>> [match.start() for match in re.finditer("$", "hello'n")]
[5, 6]
>>> [match.start() for match in re.finditer("$", "hello'n'n")]
[6, 7]
>>> [match.start() for match in re.finditer("$", "hello'n'n'n")]
[7, 8]