Regular Expression Net程式員必然要掌握正則的核心內容:匹配、提取、替換、常用元字元。 正則表達式是用來進行文本處理的技術,是語言無關的,在幾乎所有語言中都有實現。 常用元字元 .:代表除了換行之外的任意字元,一個字元占位。 *:代表前面的子表達式出現0次或者多次。如果需要*代表 ...
Regular Expression
Net程式員必然要掌握正則的核心內容:匹配、提取、替換、常用元字元。
正則表達式是用來進行文本處理的技術,是語言無關的,在幾乎所有語言中都有實現。
常用元字元
.:代表除了換行之外的任意字元,一個字元占位。
*:代表前面的子表達式出現0次或者多次。如果需要*代表的子表達式是多個字元,就將多個字元用()包含。
+:代表前面的表達式出現1次或者多次。
?:代表前面的表達式出現0次或者出現1次。
{n}:代表前面的子表達式要出現n次。
^代表開始$代表結束
{n,m}:代表前面的子表達式最少出現n次,最多出現m次。
{n,}:說明前面的子表達式最少出現n次,最多沒有限制。
[]:輸入的內容必須是在括弧內有的一個字元。
():改變優先順序、分組。
\d:代表0-9的數字。
\D:代表非數字。
\w:代表0-9a-zA-Z_中文 (經過實例證明C#里\w包含中文,JavaScript里不包含中文)
\W:代表其他特殊字元(除了0-9a-zA-Z_中文)
\s:代表看不到的字元,如:回車、空格、製表符。
\S:代表所有可見字元
正則表達式進行匹配的原則:
1.(有沒有)只關註是否存在,而不關註它的位置,也就意味著只需要能夠匹配其中一個就可以 。
2.貪婪模式:如果找到了能匹配的字元,那麼他還繼續往下匹配儘可能多的字元,只到最後
.net中的正則表達式
正則表達式在.net中就是用字元串來表示,這個字元串格式比較特殊,無論多麼特殊,在C#語言看來都是普通的字元出,具體什麼含義由Regex類內部進行語法分析。
常用的4種情況:
- 判斷是否匹配(是否有):Regex.IsMatch("字元串","正則表達式");
- 字元串提取:Regex.Match("字元串","要提取的字元出的正則表達式"); ——只能提取一個(提取一次)。
- 字元串提取(迴圈提取所有):Regex.Matches(),可以提取所有匹配的字元串。
- 字元串替換:Regex.Replace("字元串","正則","替換內容");
提取只有一個匹配項的字元串,進行分組,提取。
string str = "[email protected]";
Match match = Regex.Match(str, @"^(\w+)[@](\w+)[.](\w+)$");
if (match.Success) //匹配成功
{
Console.WriteLine(match.Groups[0].Value); //結果:[email protected]
Console.WriteLine(match.Groups[1].Value); //結果:tiantianjcx
Console.WriteLine(match.Groups[2].Value); //結果:qq
Console.WriteLine(match.Groups[3].Value); //結果:com
}
JavaScript正則表達式
創建:
字面值:var regex=/元字元/;
構造函數:var regex=new RegExp("元字元");
匹配:
bool 正則表達式對象.test("字元串");
var regex = /\d*/;
alert(regex.test("122")); //true
提取:
像數組的對象 正則表達式對象.exec("字元串");
這個對象的[0]是匹配到的結果,[1],[2]....是各個組
1.單個提取