【发布时间】:2018-01-16 10:56:07
【问题描述】:
我有一个字符串需要替换所有连字符,但仅限于两个分隔符“clients_field_”和“:”之间
例如:
"clients_field_4741a6c5-3855-4455-b487-0b38b0038ae6": "info@domain.com",
"clients_field_78f225e0-1a78-4930-b251-ad2217baeb1b": "2017-07-26"
删除所有连字符后,它应如下所示:
"clients_field_4741a6c538554455b4870b38b0038ae6": "info@domain.com",
"clients_field_78f225e01a784930b251ad2217baeb1b": "2017-07-26"
我试图找到一个有效的正则表达式,但我需要一点帮助。我尝试了表达式(?<=clients_field_)(.*)(?=:),但这当然会选择“clients_field_”和“:”之间的所有内容。
如果我能得到几行 C# 代码,那就太棒了!但我认为 RegEx 表达式会很好! :-)
谢谢!
编辑:原谅我!忘了说上面的例子是一个更大的 json 字符串的一部分。所以用 mystring.Replace("-", "") 进行简单替换是行不通的。
EDIT2:更新my example
【问题讨论】:
-
看起来冒号之前的部分具有相同数量的字符。如果是这种情况,则无需使用正则表达式。您可以将字符串分成两部分,并从第一部分中删除连字符。
-
如果您的前缀始终是
clients_field_,您可以仅对 GUID 进行子字符串替换。然后与clients_field_连接 -
原谅我!忘了说上面的例子是一个更大的 json 字符串的一部分。如此简单的用 mystring.Replace("-", "") 替换是行不通的。是的@AndyG,它们都是相同数量的字符,但是由于它是一个很大的json字符串,我认为RegEx可能会更好?
-
尝试基于
\Ganchor 的(?<=\G(?!^)|clients_field_)([^-:]*)-正则表达式并替换为$1首先在capturing group 中捕获的内容。 -
谢谢@bobblebubble!这就是我要找的东西!