2014-11-04 40 views
2

的我现在有这个(C#)字符或结束时终止:正则表达式就行

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

正如你可以看到我想要使用先行终止线的<或结束的正则表达式。 以上是不工作:(如果我删除|(?=$)然后它只会工作,如果<在字符串中。我怎么能得到正则表达式终止当<$发生?(注意:我不想包括在<在我的结果)

任何指针将不胜感激。

+0

你能描述一下你的目标吗?您是否正在寻找位于行尾或紧跟着“<”字符的网址? – Gus 2014-11-04 14:09:57

+0

您是使用SingleLine还是Multiline作为选项? – OmegaMan 2014-11-04 14:19:29

+0

@Gus要找到任何以http://开头的网址,但有些网址包含html元素(不要问我为什么,我不知道),我想确保在'<'之前退出,打开一个新的标签,网址将仍然有效。 @OmegaMan Multiline and IgnoreCase – Drakkainen 2014-11-04 14:22:56

回答

2

您需要<符号添加到字符类也或以其他方式捕获组贪婪地捕捉<性格也。

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

DEMO

[^"'<]*[^"'<]*如果原始字符串具有多行,那么请不要忘记,包括\n字符类里面会被写为[^"'<]*

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

。最好包含多行修饰符。

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

我怎样才能获得正则表达式来终止当任<或$

您可以使用此lookah与交替EAD:

(?=<|$) 
+0

我用'http:\/\ /([^“''] * [^”''] *)。*?(?= <| $)'现在它不会终止于'<'。 – Drakkainen 2014-11-04 14:10:14

+0

你能告诉我你的输入字符串 – anubhava 2014-11-04 14:10:32

+0

'http://ds.serving-sys.com/BurstingCachedScripts//ReportPage_2_8_2_0.html?ebReportURL=http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn = brd&Page

  • 11. 正则表达式从行
  • 12. 多行正则表达式
  • 13. 正则表达式多行
  • 14. java正则表达式行
  • 15. 多行正则表达式
  • 16. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
  • 17. Shell命令就地多行正则表达式替换
  • 18. 正则表达式正则表达式返回的值正则表达式
  • 19. 正则表达式正则表达式模仿正则表达式
  • 20. PHP-MySQLi替换为正则表达式/正则表达式/正则表达式
  • 21. 正则表达式表达
  • 22. 正则表达式表达
  • 23. 正则表达式表达
  • 24. Java正则表达式组与。* vs正常正则表达式
  • 25. 正则表达式多行:IP修正
  • 26. Nintex正则表达式模式正则表达式
  • 27. 设置从正则表达式模式到正则表达式?
  • 28. 正则表达式(正则表达式)模式匹配
  • 29. Python的正则表达式:“喜欢”正则表达式模式?
  • 30. 形式的Java正则表达式PHP正则表达式