如何提取位于*>;…*之间的文本字符串使用.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();