首页 > 解决方案 > C# 错误无法将 sytem.text.regularexpressions.match 转换为字符串

问题描述

以下代码块从 HTML 页面捕获文本,但在以下行出现编译错误:

St = Regex.Match(St, @"(?i)(?<= |^)order(?= |$) (?i)(?<= |^)Term (?i)(?<= |^)oF [0-9]* (?i)(?<= |^)years (?<= |^)or (?<= |^)Longer"); 

代码块

 if (textordernode.InnerHtml.Contains("Order Term"))
                {
                    String St = textordernode.InnerHtml;

                    St = St.Replace(@"\r", "");
                    St = St.Replace(@"\n", "");
                    St = Regex.Replace(St, @"<[^>]+>|&nbsp;", " ").Trim();
                    St = Regex.Match(St, @"(?i)(?<= |^)order(?= |$) (?i)(?<= |^)Term (?i)(?<= |^)oF [0-9]* (?i)(?<= |^)years (?<= |^)or (?<= |^)Longer");

                    int pFrom = St.IndexOf("Order Term of ") + "Order Term of ".Length;
                    int pTo = St.LastIndexOf("or longer");
                    try
                    {
                        textorderterm = St.Substring(pFrom, pTo - pFrom) + "or longer";
                        break;
                    }
                    catch (Exception ex)
                    {
                        textorderterm = "";
                        Console.WriteLine(ex.Message);
                    }
                }

请问我能得到一些帮助吗?

标签: c#regex

解决方案


Regex.Match返回一个Match对象;您需要调用.Value返回的Match对象以获取匹配的子字符串。

例如:

St = Regex.Match(St, @"(?i)(?<= |^)order(?= |$) (?i)(?<= |^)Term (?i)(?<= |^)oF [0-9]* (?i)(?<= |^)years (?<= |^)or (?<= |^)Longer").Value;


推荐阅读