Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式子字符串或左等价项_C#_Regex - Fatal编程技术网

C# 正则表达式子字符串或左等价项

C# 正则表达式子字符串或左等价项,c#,regex,C#,Regex,亲爱的同志们,你们好 我不知道如何通过正则表达式完成以下操作 我需要将此格式编号201101234转换为11-0123401,其中数字3和4成为破折号左侧的数字,其余五位插入破折号右侧,后面是硬编码的01 我试过了,但语法让我吃不消 这个答案听起来很有希望,但我无法正确解析它 我可以创建一个SQL函数来实现这一点,但我不希望为了重新格式化某些字符串而重击服务器 提前谢谢。我想你真的不需要正则表达式。子字符串会更好。但是,如果您只需要正则表达式,您可以使用: string newString =

亲爱的同志们,你们好

我不知道如何通过正则表达式完成以下操作

我需要将此格式编号
201101234
转换为
11-0123401
,其中数字3和4成为破折号左侧的数字,其余五位插入破折号右侧,后面是硬编码的01

我试过了,但语法让我吃不消

这个答案听起来很有希望,但我无法正确解析它

我可以创建一个SQL函数来实现这一点,但我不希望为了重新格式化某些字符串而重击服务器


提前谢谢。

我想你真的不需要正则表达式。子字符串会更好。但是,如果您只需要正则表达式,您可以使用:

string newString = Regex.Replace(input, @"^\d{2}(\d{2})(\d+)$", "$1-${2}01");
说明:

^\d{2}    // Match first 2 digits. Will be ignored
 (\d{2})  // Match next 2 digits. Capture it in group 1
 (\d+)$   // Match rest of the digits. Capture it in group 2
现在,所需的数字在组1和组2中,您可以在替换字符串中使用这些数字。

您可以尝试以下方法:

var input = "201101234";
var output = Regex.Replace(input, @"^\d{2}(\d{2})(\d{5})$", "${1}-${2}01");

Console.WriteLine(output); // 11-0123401
这将匹配:

  • 两位数字,后跟
  • 两个数字作为第1组捕获,后跟
  • 五位数字作为第2组捕获
并返回一个字符串,该字符串将匹配的文本替换为

  • 第一组,然后是
  • 文字连字符,后跟
  • 第2组,然后是
  • 文字
    01
开始和结束锚定(
^
/
$
)确保如果输入字符串与此模式不完全匹配,它将只返回原始字符串。

如果可以使用自定义C脚本,您可能希望改为使用子字符串:

string newStr = string.Format("{0}-{1}01", old.Substring(2,2), old.Substring(4));

你喜欢SQL吗?拉一些杠杆之类的东西。

你真的想要正则表达式吗?一个子串就足够了。可能吧。我使用的界面支持正则表达式、自定义C#/VB脚本(我只是一个SQL报表开发人员)和自定义SQL查询。这是我最后的办法,就是使用SQL查询。软件是Laserfiche Workflow Designer,顺便说一句。如果你可以使用自定义C#脚本,只需使用数字。子字符串(2,2)+数字。子字符串(4)+“01”“问候亲爱的同志们”我在这里见过的最好的问候。@JefferyKhan更不用说“射弹麻风病”听起来可能是世界上最可怕的疾病了p您可以解释您的正则表达式,以便对其他匹配程序有所帮助:匹配两个数字(\d匹配一个数字),捕获以下两个数字,捕获以下五个数字。替换:使用输出中捕获的组来构建新格式。我收到一个极好的错误:“Regex”名称在当前上下文中不存在。我正在尝试C#script选项。@scrolder#u使用System.Text.RegularExpressions声明一个using指令
或只使用
System.Text.RegularExpressions.Regex
而不是
Regex
@projection\u请确保使用System.Text.RegularExpressions将
添加到文件顶部,或使用实际输出
的完整类名
System.Text.RegularExpressions.Regex.Match(…)
从地下室爬出来,是吗?那带走了多少人?我不知道那跟什么有关系!坚持原来的话题,接受这个!我会夸大你的名声,诱使别人相信你。