如何将数字和减号运算符与正则表达式匹配
本文关键字:运算符 正则表达式 数字 | 更新日期: 2023-09-27 18:32:27
事实上,我想匹配" ??"我的代码如下:
//enter code here
Regex r = new Regex(@"(?'value'[0-9'-'./TSE]{1,}) '?'?(?'index'[A-Za-z:]{1,}");
string s=
@"39 ??Issue:
9 ??Pages:
1307-1325 ??DOI:
10.1109/TSE.2013.14 ??Published:";
如您所见,我想匹配这些内容:
value="39" index = "Issue:"
value="9" index = "Pages:"
value="1307-1325" index = "DOI:"
value="10.1109/TSE.2013.14" index = "Published:"
我认为只需更改正则表达式中的一两个字符就可以解决此问题。 有人可以帮忙吗?
如果您只是想要??
之前和之后的信息,并且它将始终采用该格式(值??索引),那么正则表达式对此是矫枉过正的。 只需使用 String.Split:
string s= @"39 ??Issue:
9 ??Pages:
1307-1325 ??DOI:
10.1109/TSE.2013.14 ??Published:";
string[] splitValues = s.Split(new string[] { "??", "'r'n" }, StringSplitOptions.None);
for (int i = 0; i < splitValues.Length; i += 2)
{
Console.WriteLine("value={0} index={1}", splitValues[i].Trim(), splitValues[i + 1].Trim());
}
这将在??
和换行符上拆分,从而产生您正在寻找的输出:
value="39" index = "Issue:"
value="9" index = "Pages:"
value="1307-1325" index = "DOI:"
value="10.1109/TSE.2013.14" index = "Published:"
上面的编码将字符串拆分在 ??
和 'r'n
(行尾/换行符)上,生成一个元素数组,第一个元素是第一个值,第二个元素是第二个值,第三个元素是第二行的第一个值,第四个元素是第二行的第二个值, 等。
for 循环非常简单 - i += 2
部分只是将循环计数器增加 2(而不是通常的 1 [ i++
]),因此它会打印输入中每一行的值和索引。