从正则表达式中提取值&删除C#中的括号

时间:2015-07-14 16:46:16

标签: c# regex

我正在尝试使用一串HTML并匹配[image,h,w]的实例,其中h和w是最多可达1200的整数。

这是我第一次尝试学习正则表达式。以下是我到目前为止的情况:

Regex r = new Regex(@"\Image, (\d+?), (\d+?)\]");
Match match = r.Match(controlText);

但是在我的正则表达式测试器中,它没有选择最后一个括号,并且在我的代码中它与字符串不匹配。

所以我想要的输出是'image,h,w',从那里我想解析h& w并将它们存储在变量中。

在我第一份工作的第二周,我是一名初级开发人员,我认为我花了太多时间试图解决这个问题。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

Tuple<int, int>[] imageSizes =
    (from Match match
        in new Regex(@"\[image, (\d+), (\d+)\]").Matches(controlText) 
     select new Tuple<int, int>(
        int.Parse(match.Groups[1].Value),
        int.Parse(match.Groups[2].Value))).ToArray();

示例:string controlText = "[image, 1200, 100]abacaldjfal; jk[image, 289, 400]";

imageSizes将为[1200, 100], [289, 400]

编辑:由于此标记似乎只有一个实例,您可以执行以下操作:

Match match = new Regex(@"\[image, (\d+), (\d+)\]").Match(controlText);
int h = int.Parse(match.Groups[1].Value);
int w = int.Parse(match.Groups[2].Value);

示例:string controlText = "[image, 1200, 100]abcadjfklajdfad;afdh";

h将为1200w将为100

答案 1 :(得分:0)

这将是我的方法......

var text = "[image, 300, 200] ........";

var regex = new Regex("\\[Image, (\\d+?), (\\d+?)\\]", RegexOptions.IgnoreCase );

var match = regex.Match( text );

if (match.Success){
    var h = int.Parse(match.Groups[1].Value);
    var w = int.Parse(match.Groups[2].Value);
}