下面的正則表達式一開始通配符是電子郵件的樣本,我從數據庫中使用:使用轉義字符在C#
2.2|[[email protected]]
每一行都是不同的,它可能是也可能不是一個電子郵件,但它會一直。我正在嘗試使用正則表達式來獲取括號內的信息。下面是我一直在嘗試使用:
^\[\]$
不幸的是,每次我嘗試使用它時,表達式都不匹配。我認爲問題是使用轉義字符,但我不確定。如果這不是我如何使用轉義字符,或者如果我完全錯了,請讓我知道實際的正則表達式應該是什麼。
下面的正則表達式一開始通配符是電子郵件的樣本,我從數據庫中使用:使用轉義字符在C#
2.2|[[email protected]]
每一行都是不同的,它可能是也可能不是一個電子郵件,但它會一直。我正在嘗試使用正則表達式來獲取括號內的信息。下面是我一直在嘗試使用:
^\[\]$
不幸的是,每次我嘗試使用它時,表達式都不匹配。我認爲問題是使用轉義字符,但我不確定。如果這不是我如何使用轉義字符,或者如果我完全錯了,請讓我知道實際的正則表達式應該是什麼。
關閉你的是^.*\[(.*)\]$
:
^
開始行的.*
什麼\[
支架,指示電子郵件(.*)
任何東西(電子郵件)的開始,作爲捕獲組\]
正方形bracked,指示所述電子郵件的端部的線的$
端請注意,您的正則表達式缺少.*
部件以匹配關鍵字符[和]之間的內容。
您的正則表達式 - ^\[\]$
- 與僅包含[]
的單個字符串/行匹配,並且您需要獲取位於較大字符串內部的方括號之間的子字符串。
您可以使用
var rx = new Regex(@"(?<=\[)[^]]+");
Console.WriteLine(rx.Match(s).Value);
隨着(?<=\[)
我們找到了位置[
後,然後我們每一個字符不]
與[^]]+
匹配。
另外,非正則表達式的方法:
var s = "2.2|[[email protected]]";
var ss = s.Split('|');
if (ss.GetLength(0) > 1)
{
var last = ss[ss.GetLength(0)-1];
if (last.Contains("[") && last.Contains("@")) // We assume there is an email
Console.WriteLine(last.Trim(new[] {'[', ']'}));
}
該表達式與該行的開頭緊跟着一個'[',後面緊跟着一個']'緊跟着行尾。這聽起來像它會匹配你的字符串? – Blorgbeard