我有一个字符串:
personname=aanch&personaddress=Jammu & Kashmir&personmobile=9876543210
我想要的输出是:
personname=aanch
personaddress=Jammu & Kashmir
personmobile=9876543210
是否可以使用正则表达式在&
上拆分字符串并获得上述结果?
答案 0 :(得分:2)
通过重新编辑问题,我确实看到了一个可能有效的解决方案:
splitArray = Regex.Split(subjectString,
@"& # Split on a &
(?= # but only if it's followed by...
\w+ # a series of alphanumeric characters
= # and an equals sign
) # End of lookahead assertion",
RegexOptions.IgnorePatternWhitespace);
答案 1 :(得分:0)
编辑 - 随着问题的改变
var regex = new Regex(@"&(?<=[^&=]+=)")
分解的是
&安培; - 匹配&amp;
(?&lt; = [^&amp; =] + =) - 匹配但不包括至少一个不是&amp;的字符。或=后跟=
或者,如果您实际上在名称和值之后,您可以执行以下操作
var regex=new Regex(@"(?>^|&)(?<name>.*?)=(?<value>.*?)(?=$|&[^&]+?=)");
var text="personname=aanch&personaddress=Jammu & Kashmir&personmobile=9876543210";
foreach (Match match in regex.Matches(text)) {
var name=match.Groups["name"].Value;
var value=match.Groups["value"].Value;
// Do something with values
}
答案 2 :(得分:-1)
但为什么你需要reg-ex来分割字符串。您可以使用普通的C#字符串拆分功能来获得所需的结果
string text = "ABC&DEF&GHI&JK&L&MNO&P&Q"
var splitString = text.split(text,"&");
分割后的字符串将作为数组存储在splitString