英文空格,正则表达式基础

\u0020是半角空格的16进制Unicode编码。

第二个正则表达式是针对“左英文,右中文”的情况。

 正则表达式

 Regex类

 元字符

 正则表达式通常用来检查,检索,替换符合某个格式的文本

 元字符:

 正则表达式语言由两种基本字符组成

 原义(正常)文本字符和元字符

 元字符使用正则表达式具有处理能力.

^ 表示开头

 $ 表示结尾

 * 匹配0次或者多次

 ? 0 or 1

 + 1 or more

 \w 表示字母数字下划线,汉字任意字符

 \d 表示数字

 \D 表示非数字

 \s表示字符串

 \S表示非空白字符

 [\s\S] 表示任意字符

 [\s\S]* 表示0到任意字符

 [\s\S]*? 0个字符,匹配任意个字符前的次数

 [a-A] 表示在某个范围内的字符,与指定区间内任何字符进行皮诶

 \u4e00-\u9fa5 表示中文

 | 或

 () 分组

 {n,m} 表示最少n最高m

 {n,} 最少匹配n次

 {n}  匹配前面的字符最少n次

 [^X] 表示除了X除外任意字符

//演示在开头处拼接

string str = “大家好”;

string newstr = Regex.Replace (str, “^”, “首长:”);

Console.WriteLine (newstr);

//演示在尾部处拼接

string newstr1 = Regex.Replace (str, “$”, “啊”);

Console.WriteLine (newstr1);

以数字开头中间有N个数字,以中文结尾.

string str1 = “124543好”;

string newstr2 = @”^\d*[\u4e00-\u9fa5]$”;

if (Regex.IsMatch (str1, newstr2)) {

Console.WriteLine (“匹配成功”);

}

//匹配邮箱

string strl = “zhaoningyu@lanou3g.com”;

string newstr3 = @”^\w+@\w+\.\w+$”;

if (Regex.IsMatch (strl, newstr3)) {

Console.WriteLine (“匹配成功”);

}

//检索特殊字符

string a = “#$4 16525”;

string a1 = @”[^\s\w]+”;

MatchCollection mc = Regex.Matches (a, a1);

Console.WriteLine (mc.Count);

foreach (Match item in mc) {

Console.WriteLine (item);

}

以上是正则表达式的一些基础用法.

  1. 匹配英文(半角)空格

    Regex.IsMatch(” “, “\u0020”)

(?=[\u4e00-\u9fa5])
表示“正向预搜索”一个中文字符,判断\u0020的右侧是否为中文字符。

  1. 去除中文字符之间的英文(半角)空格

    string text = “

     测 试 test1. 一下

    “;
    var result = Regex.Replace(text, “(?<=[\u4e00-\u9fa5])(\u0020)(?=[\u4e00-\u9fa5])", string.Empty); Console.WriteLine(result); //结果是:

     测试 test1. 一下

  1. 匹配中文(全角)空格

    Regex.IsMatch(“ ”, “\u3000”);

  1. 在中文字符与英文字符之间增加空格

    string text = “

     test测试test1. 一hello下

    “;
    text = Regex.Replace(text, @”(?<=[\u4e00-\u9fa5])([a-zA-Z])(?=[a-zA-Z])", " $1"); text = Regex.Replace(text, @"(?<=[a-zA-Z])([a-zA-Z])(?=[\u4e00-\u9fa5])", "$1 "); Console.WriteLine(text); //输出结果:

     test 测试 test1. 一 hello 下

  1. 匹配英文(半角)空格

    Regex.IsMatch(” “, “\u0020”)

第一个正则表达式是针对“左中文,右英文”的情况。

(?<=[\u4e00-\u9fa5])
表示“反向预搜索”一个中文字符,判断\u0020的左侧是否为中文字符。


  1. 去除中文字符之间的英文(半角)空格

    string text = “

     测 试 test1. 一下

    “;
    var result = Regex.Replace(text, “(?<=[\u4e00-\u9fa5])(\u0020)(?=[\u4e00-\u9fa5])", string.Empty); Console.WriteLine(result); //结果是:

     测试 test1. 一下

  1. 匹配中文(全角)空格

    Regex.IsMatch(“ ”, “\u3000”);

\u0020是半角空格的16进制Unicode编码。

第二个正则表达式是针对“左英文,右中文”的情况。

\u3000是全角空格的16进制Unicode编码。

(?<=[\u4e00-\u9fa5])
表示“反向预搜索”一个中文字符,判断\u0020的左侧是否为中文字符。

第一个正则表达式是针对“左中文,右英文”的情况。

\u3000是全角空格的16进制Unicode编码。

  1. 在中文字符与英文字符之间增加空格

    string text = “

     test测试test1. 一hello下

    “;
    text = Regex.Replace(text, @”(?<=[\u4e00-\u9fa5])([a-zA-Z])(?=[a-zA-Z])", " $1"); text = Regex.Replace(text, @"(?<=[a-zA-Z])([a-zA-Z])(?=[\u4e00-\u9fa5])", "$1 "); Console.WriteLine(text); //输出结果:

     test 测试 test1. 一 hello 下

(?=[\u4e00-\u9fa5])
表示“正向预搜索”一个中文字符,判断\u0020的右侧是否为中文字符。