[英]Regular Expression to match certain formula
我是正則表達式的新手。 我想知道如何使用正則表達式來替換
001-34/323
To
001/34-323
我有這樣的事情
return Regex.Replace(input,
"\\b(?<p1>\\d{1,2})/(?<p2>\\d{1,2})/(?<p6>\\d{2,4})\\b",
"${p1}-${p2}-${p3}", RegexOptions.None.
我有這樣的東西,但它不起作用它與我想要的相反
輸入具有所有整數。 請讓我知道將輸入更改為輸出的正則表達式謝謝
您當前的正則表達式需要這樣的數字:
P1/P2/P3
在哪里:
為什么它不起作用? 您的輸入字符串是001-34/323
( P1-P2/P3
) 而 P1 是一個 3 位數字。 此外,您的最后一個捕獲組稱為<p6>
,而不是<p3>
。
正確的字符串應該是:
\b(?<p1>\d{1,3})-(?<p2>\d{1,2})/(?<p3>\d{2,4})\b
或轉義形式:
"\\b(?<p1>\\d{1,3})-(?<p2>\\d{1,2})/(?<p3>\\d{2,4})\\b",
您的輸出模板也是錯誤的( P1-P2-P3
,而不是P1/P2-P3
)。
最終代碼示例:
var input = "001-34/323";
var output = Regex.Replace(input,
"\\b(?<p1>\\d{1,3})-(?<p2>\\d{1,2})/(?<p3>\\d{2,4})\\b",
"${p1}/${p2}-${p3}",
RegexOptions.None);
Console.WriteLine(output);
為什么要嘗試匹配數據的模式來讓它變得困難?
如果您只是用斜線替換破折號,請使用匹配評估器在找到破折號或斜線時返回相反的結果。
var text = "001-34/323";
Regex.Replace(text, "[-/]", me => { return me.Value == "-" ? "/" : "-"; })
結果
001/34-323
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.