[英]How to let regex know that it should stop after a first occurence?
string time = "Job started: donderdag 6 mei 2010 at 20:00:02"
var filterReg = new Regex(@".*:", RegexOptions.Compiled);
time = filterReg.Replace(time, String.Empty);
第一次發生后有可能停止嗎? 因此,第一個“:”。
您使用正則表達式獲取簡單子字符串的任何原因是什么?
time = time.Substring(time.IndexOf(":") + 1);
通過使用更具體的正則表達式
new Regex(@"^[^:]*:", RegexOptions.Compiled);
您的.*:
這樣做
.*
貪婪地匹配所有內容,因此它一直運行到字符串的末尾。 :
嘗試匹配,因此正則表達式引擎一次返回一個字符(稱為回溯)以找到匹配項。 它在找到的第一個冒號處停止(從字符串末尾開始) 而^[^:]*:
這樣做:
^
將正則表達式錨定到字符串的開頭。 字符串中間不會發生匹配。 [^:]*
貪婪地匹配除冒號以外的所有內容,因此它一直運行到第一個冒號 :
可以輕松匹配,因為下一個字符恰好是冒號。 完成。 不涉及回溯,這意味着它也更加有效。
使用此正則表達式.*?:
和Replace
重載 :
string time = "Job started: donderdag 6 mei 2010 at 20:00:02"
var filterReg = new Regex(@".*?:", RegexOptions.Compiled);
filterReg.Replace(time, String.Empty, 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.