我正在尝试使用一串HTML并匹配[image,h,w]的实例,其中h和w是最多可达1200的整数。
这是我第一次尝试学习正则表达式。以下是我到目前为止的情况:
Regex r = new Regex(@"\Image, (\d+?), (\d+?)\]");
Match match = r.Match(controlText);
但是在我的正则表达式测试器中,它没有选择最后一个括号,并且在我的代码中它与字符串不匹配。
所以我想要的输出是'image,h,w',从那里我想解析h& w并将它们存储在变量中。
在我第一份工作的第二周,我是一名初级开发人员,我认为我花了太多时间试图解决这个问题。任何帮助表示赞赏。
答案 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
将为1200
,w
将为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);
}