如何在两个数字之间查找字符串并将其存储在数组中

本文关键字:串并 字符串 字符 存储 数组 查找 之间 数字 两个 | 更新日期: 2023-09-27 18:35:05

下面的代码存储在一个名为str1的字符串中,数字表示行号,文本表示php代码行。现在,我想分别提取行号和代码行。

* 47: echo
<http://php.net/echo> echo "<div id=" . $var . ">content</div>"; 
  o 46: $var = htmlspecialchars($v, ENT_QUOTES); 
      + 45: $v = $_SESSION['UserData']; 

到目前为止,我已经尝试过

str1.Split(new char[] { ':', ';' });

但这也会断开 'http: ' 中的字符串,并且在返回的数组中包含野生字符 ' ''r。如何删除野生字符 ' ''r + o?或者有没有其他方法可以在两个数字之间提取数字和字符串

如何在两个数字之间查找字符串并将其存储在数组中

试试这个:

string str1 =  "47: echo <http://php.net/echo> echo '"<div id='" . $var . '">content</div>'"; " + Environment.NewLine
            + "o 46: $var = htmlspecialchars($v, ENT_QUOTES);" + Environment.NewLine
            + "+ 45: $v = $_SESSION['UserData']; ";
var matches = System.Text.RegularExpressions.Regex.Matches(str1, @"(['d]+)?:(.*)?'r'n?", System.Text.RegularExpressions.RegexOptions.Multiline);
foreach(Match m in matches)
{
    Console.WriteLine(m.Groups[1].Value);
    Console.WriteLine(m.Groups[2].Value);
}
Regex regex = new Regex(@"(?<LineNumber>'d+)[:](?<Code>.+)$");
using (StreamReader reader = new StreamReader("TextFile1.txt"))
{
    string s = null;
    while ((s = reader.ReadLine()) != null)
    {
        Match match = regex.Match(s);
        if (match.Success)
        {
            Console.WriteLine("{0}: {1}", match.Groups["LineNumber"].Value,
                match.Groups["Code"].Value);
        }
    }
}

将输出:
47:回声
46: $var = htmlspecialchars($v, ENT_QUOTES);
45: $v = $_SESSION["用户数据"];