我想換掉這個字符串 2000-12-13T13:59:59+12:00
成爲 2000-12-13 13:59:59
如何使用.net正則表達式來替換這個字符串?
這是可能的?我不能使用普通的替換是因爲這個值是與其他字符串/消息混合在一起,所以我需要搜索模式來取代。
我想換掉這個字符串 2000-12-13T13:59:59+12:00
成爲 2000-12-13 13:59:59
如何使用.net正則表達式來替換這個字符串?
這是可能的?我不能使用普通的替換是因爲這個值是與其他字符串/消息混合在一起,所以我需要搜索模式來取代。
MessageBox.Show(Regex.Replace(
@"2000-12-13T13:59:59+12:00",
@"\b(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})[+-]\d{2}:\d{2}\b",
@"$1 $2"
));
UPD:周圍的模式,一些解釋和一些鏈接添加單詞邊界
\b - word boundary (not to match "12000-12-13T..." or "X2000-12-13T..." etc, but still to match "(2000-12-13T..." and the like, optional)
( - start first capturing ($1)
\d{4}-\d{2}-\d{2} - date; 4 digits, dash, 2 digits, dash, 2 digits (\d for digit, {N} for exactly N of them)
) - end first capturing ($1)
T - literal "T"
( - start second capturing ($2)
\d{2}:\d{2}:\d{2} - time; 2 digits, colon, 2 digits, colon, 2 digits
) - end second capturing ($2)
[+-] - utc offset sign; any of literal "+" or "-" (be careful with "-" inside [], if between other characters it defines range, like [a-z])
\d{2}:\d{2} - utc offset; 2 digits, colon, 2 digits
\b - word boundary (not to match "...+12:000" or "...+12:00a" etc, optional)
資源:on regex in general,on .net,on C# in particular,simple tool for testing
謝謝!是工作!你可以直接給我一個更完整的正則表達式參考,因爲我搜索周圍,並沒有看到可以用$ 1 $ 2來代替。 – tsohtan
添加了一些細節。我希望這有幫助。 –
試試這個
\+\d{2}:\d{2}$
代碼
string resultString = null;
try {
resultString = Regex.Replace(subjectString, @"\+\d{2}:\d{2}$", "$${retain}", RegexOptions.IgnoreCase);
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
使用正則表達式
(.*)\s(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})\+\d{2}:\d{2}\s(.*)
和下面的代碼
var regexPattern = @"(.*)\s(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})\+\d{2}:\d{2}\s(.*)";
var dateString = "Some text here 2000-12-13T13:59:59+12:00 And some more text here";
var formattedString = Regex.Replace(dateString, regexPattern, "$2 $3", RegexOptions.IgnoreCase);
將輸出
2000-12-13 13:59:59
正則表達式是相當嚴格的,所以你應該能夠從其他文本中抓取它,只要它始終以這種格式存在 - 如果格式根本改變(時間或日期中的單個數字),那麼它不會匹配,但很難說如果沒有上下文,這是一個問題或不是。它還假定該模式僅在文本中出現一次,並且它具有前後空格。
這使用空格作爲分隔符,不能使用分號,括號等。此外,這將替換所有的字符串,不僅是時間,通常不是所需的結果。 –
如果您的工作與您的工作相同,您能否提供更多工作實例?我們可以通過編寫我們自己的字符串解析器來輕鬆歸檔它:) – nXqd