簡體   English   中英

如何用正則表達式匹配數字和減號?

[英]How to match number and minus operator with regex?

實際上,我想匹配“ ??”之前和之后的內容。 我的代碼如下:

//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:"

我認為只需在正則表達式中更改一個或兩個字符即可解決此問題。 有人可以幫忙嗎?

如果您只是想獲取??之前和之后的信息?? ,並且將始終采用該格式(值??索引),那么Regex對此就顯得有些過時了。 只需使用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++ ]),因此它將打印輸入中每一行的值和索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM