c# - 正则表达式匹配某些公式

标签 c# regex

我是正则表达式新手。我想知道如何使用正则表达式来替换

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);

Try it online

关于c# - 正则表达式匹配某些公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094438/

相关文章:

php - 忽略正在搜索的标点符号

java - 正则表达式找不到组

java - 如何在 Java 中检测字符串是否包含西里尔字母?

c# - Fluent断言: how to specify that collection should contain a certain number of elements matching predicate?

c# - Visual Studio 2015 - 片段后的 C# 换行行为

c# - 在C#中打开和关闭线程

c# - 正则表达式停止除 _ 之外的特殊字符 not in start

JavaScript REGEX 全部匹配并替换

c# - 使用 Isolated COM 时应用程序在 CoCreateInstance 期间挂起

c# - ASP.NET 核心 2.0 : Authorization failed for user: (null)