我有一个字符串,我想检查并搜索其中的子字符串。如果找到子字符串,我想在原始字符串上执行某些操作。
字符串如下所示:
"\r\radmin@Modem -- *<456> \radmin@Modem -- *<456> "
目标:搜索子字符串模式&#34; - *&lt; 456&gt; &#34; 如果字符串中存在,则返回成功或失败(位数在1到无限之间:1,5,36,76,478,975等)。
我需要的正则表达式模式是什么?
答案 0 :(得分:2)
使用此:
var myRegex = new Regex("(?<=<)[0-9]+(?=>)");
string resultString = myRegex.Match(yourString).Value;
Console.WriteLine(resultString);
// matches 456
在 the Regex Demo 中查看匹配。
<强>解释强>
(?<=<)
声称前面的内容是<
[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}\>"
其中MIN
和MAX
是字符串中可以显示的位数(在我们感兴趣的匹配部分内) )。
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
只是意味着空白。