用正则表达式解析字符串

per*_*ide 0 c# regex winforms

我有一个像这样的字符串:

Addadafafa/DHello/p2324141142DsddDsdsds/Dgood/p23323
Run Code Online (Sandbox Code Playgroud)

对于那些没有注意到的人,我想保留的文字总是在/D和之间/p.我试图使用正则表达式解析它,但我无法为所有字符串执行此操作.它总是保留第一个或最后一个字.

我怎样才能保持与所有的字一个新的字符串/D,并/p从以前的字符串?

预期产量:

hello good
Run Code Online (Sandbox Code Playgroud)

L.B*_*L.B 6

string input = "Addadafafa/DHello/p2324141142DsddDsdsds/Dgood/p23323";
var parts = Regex.Matches(input, "/D(.+?)/p")
                 .Cast<Match>()
                 .Select(m => m.Groups[1].Value)
                 .ToList();

string finalStr = String.Join(" ", parts); //If you need this.
Run Code Online (Sandbox Code Playgroud)

  • 这里的关键是非贪心量词`+?`.没有它,它将匹配`Hello/p2324141142DsddDsdsds/Dgood`. (3认同)