C# 什么';这个正则表达式怎么了?

C# 什么';这个正则表达式怎么了?,c#,regex,C#,Regex,这几乎可以肯定是我忽略了的一件非常愚蠢的事情,但我被难住了。下面的C#风格表达式应该与电话号码相匹配(它们的一个有限子集,但这只是测试…): 搜索字符串如下所示: 978-454-0586\r\nother junk\r\nmore junk\r\nhttp://www.google.com\r\n 当处于隔离状态时,表达式与电话号码匹配,但当与其他内容相邻时,表达式与电话号码不匹配。例如,如果我在手机后把所有的东西都剪掉,效果就很好 我如何修改表达式,使其与电话号码匹配,而不会挂断其他垃圾邮

这几乎可以肯定是我忽略了的一件非常愚蠢的事情,但我被难住了。下面的C#风格表达式应该与电话号码相匹配(它们的一个有限子集,但这只是测试…):

搜索字符串如下所示:

978-454-0586\r\nother junk\r\nmore junk\r\nhttp://www.google.com\r\n
当处于隔离状态时,表达式与电话号码匹配,但当与其他内容相邻时,表达式与电话号码不匹配。例如,如果我在手机后把所有的东西都剪掉,效果就很好

我如何修改表达式,使其与电话号码匹配,而不会挂断其他垃圾邮件


谢谢

正则表达式中的“$”与行尾匹配。如果删除它,regexp应该可以正常工作,但是如果有“Foo978-454-0586”,它将不工作,因为“^”匹配行首。

和$符号分别表示“行首”和“行尾”。如果你想在一行中匹配,就去掉它们。

< p> <代码> $>代码>表示字符串的结尾,而不是结束。

问题是“^”和“$”强制它只在字符串的开始和字符串的结尾匹配。


去掉这两个标签,看看你的进展如何。

电话号码总是在自己的线路上吗?如果是这样,将RegexOptions.Multiline添加到正则表达式构造函数中。没有这一点,regex.match将使用“^和$”字符串的开头和结尾。

哈哈,我喜欢我们同时回答的方式。我已将我的标记为删除,以清除页面中的内容。看来你们都是对的。非常感谢!事实上,电话号码是在自己的线路上;看到它后面的\r\n吗?如果按照Ariel的建议应用多行修改器,正则表达式就可以正常工作。
978-454-0586\r\nother junk\r\nmore junk\r\nhttp://www.google.com\r\n