2014-11-04 67 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