正则表达式替换以转义字符添加0 - c#

我想查找一位数字并为DateTime格式添加“ 0”。

我尝试了下面的代码:

var match = Regex.Replace(@"2017-12-15T8:15:02.000000Z", 
                          @"([^\d])(\d{1})([^\d])",
                          @"$10$2$3");

问题是c#尝试找到匹配的组索引10(因为$ 10,但必须为$ 1和“ 0”)如何将0与转义字符一起使用?

参考方案

您的主要问题是使用反向引用语法,您可以通过用括号将组ID包裹起来(即@"${1}0$2$3")来轻松修复该问题。但是,稍后正则表达式可能还有其他问题。

使用环顾四周来避免此类问题以及匹配项重叠的问题是最安全的:

var match = Regex.Replace(@"2017-12-15T8:15:02.000000Z", 
                      @"(?<!\d)\d(?!\d)",
                      @"0$&");

请参见regex demo

正则表达式替换以转义字符添加0 - c#

彭定康详细资料

(?<!\d)-当前位置左边不允许有数字
\d-任意Unicode数字(如果您通过RegexOptions.ECMAScript选项,它将仅与ASCII数字匹配)
(?!\d)-当前位置右边不允许有数字。

在替换模式中,$&代表整个匹配项(无需用捕获括号将\d包裹起来)。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

java split regex-字符的任意组合 - java

我正在使用3个字符分割字符串:空格,破折号和逗号我想要的是能够使用这3个字符的任意组合进行拆分,例如:-,(破折号后跟逗号)或,--(逗号后加2破折号)或- , -(破折号,逗号间隔破折号)等 String address = "Sector -18B, Dwarka"; String[] addressParts = address.s…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…