Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式查找包含数值的所有单词?_C#_.net_Regex - Fatal编程技术网

C# 使用正则表达式查找包含数值的所有单词?

C# 使用正则表达式查找包含数值的所有单词?,c#,.net,regex,C#,.net,Regex,在我的dotnet应用程序中,我必须找到所有包含字母和数字值的单词,我试图找到,但没有找到正确的答案 我有(?=。\d)\w+正则表达式,但它返回45作为有效值。下面是我的示例列表,其中粗体是正确的单词,其他是错误的单词 madan45 45马丹 mad45an 马丹 45 我不能放[a-zA-Z],因为我的文本可能包含英语以外的内容。โครงการสาวอีสานก็5000บาท. (?:\d+[a-z]|[a-z]+\d)[a-z\d]* 此Reg Ex应适用于您的要求 包含字母和数

在我的dotnet应用程序中,我必须找到所有包含字母和数字值的单词,我试图找到,但没有找到正确的答案 我有
(?=。\d)\w+
正则表达式,但它返回45作为有效值。下面是我的示例列表,其中粗体是正确的单词,其他是错误的单词

  • madan45
  • 45马丹
  • mad45an
  • 马丹
  • 45

我不能放[a-zA-Z],因为我的文本可能包含英语以外的内容。โครงการสาวอีสานก็5000บาท.

(?:\d+[a-z]|[a-z]+\d)[a-z\d]*
此Reg Ex应适用于您的要求

包含字母和数字值的所有单词

找不到正确的答案我有
(?=。\d)\w+

你很接近。应匹配数字前的任何单词字符以满足数字条件。然后,在主模式中,需要一个字母:

Regex:

(?=\w*\d)\d*[A-Za-z]\w*

  • 展望未来
    • \w*
      任何单词字符:
      [A-Za-z0-9\]
    • \d
      需要1位数字
  • 主模式
    • \d*
      字母前面的任何数字
    • [A-Za-z]
      需要1个字母
    • \w*
      单词的其余部分
  • (?:^|)(?)?
    
    (\d+|[A-z]+)$
    :所有字母或数字

    (?!(\d+|[A-z]+)$)
    :负前瞻-断言不可能匹配所有字母或所有数字。

    这也适用于:

    string pattern = @"^(?=\D*\d)(?=\d*\D)\w+$";
    
    检查:

    var inputs = new List<string> { "madan45", "45madan", "mad45an", "Madan", "45" };
    
    foreach (var str in inputs)
        Console.WriteLine($"{str} - {Regex.IsMatch(str, pattern)}");
    

    我不能放[a-zA-Z],因为我的文本可能包含英语以外的内容。โครงการสาวอีสานก็5000บาท@vsk我忘了检查一些条件,如(7-8),(14.20),(1000),(5555+),(50%),(“10)”,(“10”),([200])这些条件是不正确的,但上面的正则表达式也提取了这些条件。@madan您可以在character类中添加所有字符。我已经为您定义了一些。如果我在一个sting中传递的单词超过1个,则不匹配
    string pattern = @"^(?=\D*\d)(?=\d*\D)\w+$";
    
    var inputs = new List<string> { "madan45", "45madan", "mad45an", "Madan", "45" };
    
    foreach (var str in inputs)
        Console.WriteLine($"{str} - {Regex.IsMatch(str, pattern)}");
    
    //  madan45 - True
    //  45madan - True
    //  mad45an - True
    //  Madan - False
    //  45 - False