如何提取位于*>;…*之间的文本字符串使用.NETC#regex或其他什么?

如何提取位于*>;…*之间的文本字符串使用.NETC#regex或其他什么?,c#,string,character,extract,between,C#,String,Character,Extract,Between,我有一根这样的绳子 *>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0532*>-0.0534*>-0.0534*>-0.0534*>-0.0532*>-0.0534* 我想在*>和*字符之间提取 我尝试了以下错误的模式: string pattern = "\\*\\>..\\*"; Re

我有一根这样的绳子

*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0532*>-0.0534*>-0.0534*>-0.0534*>-0.0532*>-0.0534*
我想在
*>
*
字符之间提取

我尝试了以下错误的模式:

        string pattern = "\\*\\>..\\*";

        Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
        MatchCollection matches = rgx.Matches(seriGelen);

        if (matches.Count > 0)
        {
            foreach (Match match in matches)
                MessageBox.Show("{0}", match.Value);
        }

字符串开头是否有错误?第一个数字后缺少星号?>-0.0532>-0.0534*>

如果没有,试试这个

>([-+]?[0-9]*\.?[0-9]+)\*
C#代码


看起来可能有非常不同的值(UPD:有一个整数正值)。所以,让我不要检查数字格式。此外,我将考虑<代码> *> <代码>和<代码> <代码>,还有<代码> */COD>只是分隔符的不同变体。 我想提出以下解决方案

 (?<=[>\*])([^>\*]+?)(?=[>\*]+)   

您可以使用简单的正则表达式:

(?<=\*>).*?(?=\*)
(?).*(?=\*)

示例代码:

string text = "*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0532*>-0.0534*>-0.0534*>-0.0534*>-0.0532*>-0.0534*";
string[] values = Regex.Matches(text, @"(?<=\*>).*?(?=\*)")
                       .Cast<Match>()
                       .Select(m => m.Value)
                       .ToArray();
string text=“*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0532*>-0.0534*>-0.0534*>-0.0534*>-0.0532*>-0.0534*”;
字符串[]值=Regex.Matches(文本,@“(?).*(?=\*)”)
.Cast()
.选择(m=>m.Value)
.ToArray();

欢迎使用堆栈溢出!通过发布您尝试的解决方案,您已经做得很好,但是,如果您描述您的解决方案不起作用的原因,您会得到更好的答案是的,存在复制粘贴错误。我修好了。谢谢你的回答。我将尝试它。VS表示点\的未识别转义序列。最后,我对它做了一点修改。现在它正在工作,但返回时带有>符号,如>-0.532。我分不开>签名@dre>([-+]?[0-9]*.?[0-9]+)*原始粘贴的代码用于.NET。不需要修改。我已经用c代码更新了答案。我想学习regex。但是你的想法和regex101站点非常有用。谢谢@Mazharenko非常感谢你。这种模式工作正常。
(?<=\*>).*?(?=\*)
string text = "*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0534*>-0.0534*>-0.0532*>-0.0532*>-0.0534*>-0.0534*>-0.0534*>-0.0532*>-0.0534*";
string[] values = Regex.Matches(text, @"(?<=\*>).*?(?=\*)")
                       .Cast<Match>()
                       .Select(m => m.Value)
                       .ToArray();