簡體   English   中英

正則表達式匹配特定公式

[英]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

在哪里:

  • P1 是 1-2 位數字
  • P2是1-2位數字
  • P3 是 2-4 位數字

為什么它不起作用? 您的輸入字符串是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.

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