正则表达式格式化的话

正则表达式格式化的话

问题描述:

我怎么可以格式如下字符串正则表达式格式化的话

地址1 = + 1234 +块+ +的XYZ +街道+ 地址2 = +圣诞老人+铁+温泉+ 状态= +加州

地址1 = + 1234 + +块的+ XYZ +街+ &地址2 = +圣诞老人+铁+泉+ & State = + California

下面的正则表达式不能正常工作。有人会解决这个问题吗?

string inputString = "Address1=+1234+block+of+XYZ+Street+Address2=+Santa+Fe+Springs+State=+California"; 
string outString = Regex.Replace(inputString,@"([\s])([a-zA-Z0-9]*)(=)","&$1"); 

如果你想要做的是前缀“地址2”和“国家”由符号:

Regex.Replace(inputString, "(?=Address2=|State=)", "&"); 
+0

如果某人住在State St.,该怎么办?第二种情况可能会更好地匹配'State ='。 – jball 2010-02-04 00:51:29

+0

我有这个问题的唯一问题是有时我的输入有address2.is有一个wyy逃脱案件的灵活性? – Sen 2010-02-04 01:00:36

+0

@jball是这是一个有效的场景。 – Sen 2010-02-04 01:02:08

我想你想这

Regex.Replace(inputString,@"\+([a-zA-Z0-9]+)=","+&$1=") 

或者这样,如果你想允许在关键字中使用除+ & =以外的任何字符。

Regex.Replace(inputString,@"\+([^+&=]+)=","+&$1=") 
+0

@John,对于这种情况'\ +([^ +%=] +)='可能是一个更好的字符集匹配... – gnarf 2010-02-04 02:45:57

+0

@gnarf:+而不是*当然,我不确定允许字母和数字以外的字符作为关键字。可能会更好,可能不会。我会做+更改 – 2010-02-04 02:57:17

+0

@gnarf:为什么%在[^ +%=]你的意思是&? – 2010-02-04 03:03:02