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(…)
从地下室爬出来,是吗?那带走了多少人?我不知道那跟什么有关系!坚持原来的话题,接受这个!我会夸大你的名声,诱使别人相信你。