用C#替换字符串中的字符正则表达式
我想知道如何用数组括号内的,
字符替换另一个字符,如.
。字符串表达式我有低于:用C#替换字符串中的字符正则表达式
属性[ “412324 - PENNDOT I-95”, “种类”]值,属性[ “412324 - PENNDOT I-95”, “种类”]代码
。
预期输出应该是:
属性[ “412324 - PENNDOT I-95”。 “Category”]。Value,Attributes [“412324 - PENNDOT I-95”。 “分类”]代码
var regex = new Regex(@"(?<=\[[^\[\]]*),(?=[^\[\]]*\])");
return regex.Replace(<your sample string>, ".");
在正则表达式模式,到,
的左侧为正回顾后零宽度断言,这意味着必须有一个[
然后零个或多个既不是[
也不是]
的字符导致逗号。
在逗号后面,表示可以有零个或多个字符,既不是[
也不是]
,因此必须有一个关闭]
。
零宽度断言意味着模式必须在匹配文本之前或之后,但不是匹配的一部分。由于我们只匹配,
我们的替换件只是.
+1对于一个非常好的解决方案加说明 – Alex 2012-04-10 06:16:18
谢谢你,杰伊。这个解决方案有效这让我有更多的了解正则表达的动机。 – 2012-04-10 16:21:41
,如果它总是在这个sheme,再快一点将与string.replace:
string sin = "Attributes["412324 - PENNDOT I-95", "Category"].Value, Attributes["412324 - PENNDOT I-95", "Category"].Code";
string sout = sin.Replace("\", \"","\". \"");
你可以用正则表达式是相同的,但它是慢,但仍然是可以打破如果输入的字符串改变它的结构
这是一个有效的解决方案,但我不同意你最后的评论。你的解决方案比一个好的正则表达式解决方案更容易破解。 – 2012-04-10 05:33:39
是的,我知道这一点,RegEx将在大多数一般情况下工作,但如果输入字符串总是看起来像这样--OP可以考虑使用这个更简单(和更快)的解决方案。无论如何,OP的问题的正确答案是Jay的答案 - 它大量使用RegEx来替换正确的逗号 – 2012-04-10 06:49:30
正如你所提到的,这个解决方案应该可以工作,但是有时输入字符串可能没有额外的空格和引号标记可以是单引号。我的问题没有说清楚。 – 2012-04-10 16:25:14
您是否尝试过任何东西?发布一些你迄今为止尝试过的代码。 – 2012-04-10 05:25:49
是的,我试过了,它的工作原理。 – 2012-04-10 16:22:53