正则表达式终止字符或行尾

时间:2014-11-04 14:05:38

标签: c# regex

我目前有这个(C#):

http:\/\/([^""']*[^""']*).*?((?=<)|(?=$))

正如您所见,我试图使用前瞻来终止<或行尾的正则表达式。 以上不起作用:(如果我删除了|(?=$),那么只有<在字符串中才会有效。如何在<或{{$时终止正则表达式1}}发生了吗?(注意:我不想在我的结果中加入<

任何指针都会非常感激。

2 个答案:

答案 0 :(得分:2)

您还需要在字符类中添加<符号,否则捕获组也会贪婪地捕获<字符。

http:\/\/([^"'<]*[^"'<]*).*?(?=<|$)

DEMO

[^"'<]*[^"'<]*将写为[^"'<]*

@"http:\/\/([^""'<]*).*?(?=<|$)"

如果原始字符串有多行,则不要忘记在字符类中包含\n。最好包含多行修饰符。

@"(?m)http:\/\/([^""'<\n]*).*?(?=<|$)"    

答案 1 :(得分:1)

  

当&lt;&lt;时,我怎样才能让正则表达式终止?或$

您可以使用此前瞻与替换:

(?=<|$)