示例:我想在名为target的字符串中找到1234:
string target = "55555>>><<[1234]<>>>788";
我怎样才能找到[,]之间的数字而不知道[]之前[或之后]之间有多少位数?我的项目需要一个小代码。
感谢。
答案 0 :(得分:3)
using System.Text.RegularExpressions;
...
// Declare target
string target = "55555>>><<[1234]<>>>788";
// Declare the regular expression
Regex regex = new Regex(
@"(?<=\[)[0-9]+(?=\])",
RegexOptions.None
);
// Use regex to get value
string number = regex.Match(target).Value;
// Convert to number (optional)
int value = 0;
int.TryParse(number, out value);
// Note: value will be 0 if no matches are found.
这个正则表达式的作用:
第一位(?<=\[)
是“向后看”。它确保括号进行数字处理。你必须用反斜杠转义它,因为括号是正则表达式中的特殊字符。
中间位[0-9]+
查找任何数字中的一个或多个。如果您想要零或更多,则可以使用星号而不是加号:[0-9]*
最后一位(?=\])
是“向前看”,类似于“向后看”。支架再次被转义。
输出将只是没有括号的数字,但仅当数字被括号括起时才会输出。
答案 1 :(得分:1)
这听起来像是正则表达式的工作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
string str = "55555>>><<[1234]<>>>788";
Regex r = new Regex(@"\[(\d*)\]");
Match match = r.Match(str);
Console.WriteLine(match.Groups[1].Value);
}
}
}
上面的代码有以下输出
1234
Press any key to continue . . .
答案 2 :(得分:0)
这是一个正则表达式,可以解决这个问题:
Console.WriteLine (Regex.Match("55555>>><<[1234]<>>>788", @"(?:\[)(?<Data>[^\]]+)(?:\])").Groups["Data"].Value);
// 1234 is outputed
答案 3 :(得分:0)
以下内容应该足够了:
var match = Regex.Match("55555>>><<[1234]<>>>788", ".*\[(.+)\].*");
var value = match.Groups[1].Value; //= "1234"
如果值应始终为数字,则可以将(.+)
替换为(\d+)
,与其他答案一样。
.+
表示任何字符
\d
表示0到9之间的任何数字。