编写正则表达式以搜索子字符串C#

时间:2014-07-24 09:09:30

标签: c# regex string substring

我有一个字符串,我想检查并搜索其中的子字符串。如果找到子字符串,我想在原始字符串上执行某些操作。

字符串如下所示:

"\r\radmin@Modem -- *<456> \radmin@Modem -- *<456> "  

目标:搜索子字符串模式&#34; - *&lt; 456&gt; &#34; 如果字符串中存在,则返回成功或失败(位数在1到无限之间:1,5,36,76,478,975等)。

我需要的正则表达式模式是什么?

7 个答案:

答案 0 :(得分:2)

使用此:

var myRegex = new Regex("(?<=<)[0-9]+(?=>)");
string resultString = myRegex.Match(yourString).Value;
Console.WriteLine(resultString);
// matches 456

the Regex Demo 中查看匹配。

<强>解释

  • lookbehind (?<=<)声称前面的内容是<
  • [0-9]+匹配一个或多个数字
  • 前瞻(?=>)声称接下来是>

答案 1 :(得分:1)

您可以使用以下代码来检查您的模式是否存在:

 string yourInput = "\r\radmin@Modem -- *<456> \radmin@Modem -- *<456> "  ; 
 string pattern = @"<(\d+)>"; 
 boolean success = Regex.Match(yourInput , pattern, RegexOptions.IgnoreCase).Success ; 
如果找到号码,

success将为真。

答案 2 :(得分:1)

你可以使用这个正则表达式

<[1-9][0-9]*>

<强>解释

[1-9]

此部分的范围是1-9,因此您的数字大于0

[0-9]*

数字范围从0到9,*使您可以根据需要设置数字

其他方式: 你也可以使用数字的特殊字符,但它真的取决于正则表达式语法

\d

答案 3 :(得分:1)

使用此模式,您可以匹配字符串:"--\s\*\<\d{3}\>" 注意:如果位数可以更改,请使用:"--\s\*\<\d{MIN,MAX}\>"其中MINMAX是字符串中可以显示的位数(在我们感兴趣的匹配部分内) )。

using System;
using System.Text.RegularExpressions;

class Example
{
   static void Main()
   {
      string text = "One car red car blue car";
      // This regex will match the pattern you're looking for
      // Since youre new to regexes :) I'll explain it a little:
      // "--" matches "--" literally, "\s" matches the space in between but only once.
      // "\*" matches the "*" and "\<" and "\>" match "<" and ">" respectively
      // "\d" matches a digit 0-9 and "{3}" indicates that there are three digits 
      string pat = @"--\s\*\<\d{3}\>";

      // Instantiate the regular expression object.
      Regex r = new Regex(pat, RegexOptions.IgnoreCase);

      // Match the regular expression pattern against a text string.
      Match m = r.Match(text);
      while (m.Success) 
      {
         // Do something ...
         // Find next match
         m = m.NextMatch();
      }
   }
}

这将允许您根据每场比赛进行任何更改。因此,每次匹配正则表达式时,您都可以对字符串执行某些操作,然后查看是否还有其他匹配等等...

答案 4 :(得分:1)

您可以使用Regex.IsMatch使用此正则表达式--\\s\\*<\\d+>来匹配-- *<456>等字符串

bool MatchTheNumTag(string str)
{
    Regex reg = new Regex("--\\s\\*<\\d+>");
    return reg.IsMatch(str);
}

答案 5 :(得分:1)

也许以下内容可以帮助您:

    static void Main(string[] args)
    {
        string originalString= "\r\radmin@Modem -- *<456> \radmin@Modem -- *<456> ";
        Regex reg = new Regex(@"-- \*<[1-9][0-9]*>");
        bool isMatch = reg.IsMatch(originalString);

        Console.WriteLine(isMatch);
    }

答案 6 :(得分:0)

欢迎来到Regexes!

你要知道正则表达式中的某些字符是特殊字符并且需要转义,你可以在这里找到它们:http://www.regular-expressions.info/characters.html

这意味着您的模式的正则表达式为\s\-\-\s\*<456>

\s只是意味着空白。