C#查找word文档中两个字符之间的所有字符串



我正在使用DocX库来替换word文档中的文本。我想以某种方式在我的模板docx文件中找到"[]"之间的所有字符串,例如[Name]、[LastName]、[Date]等…并将其替换为我以前加载到datagridview的具有相同列名(Name、LastName、Date)的值。以下是我目前所拥有的:

foreach (DataGridViewRow dataGridViewRow in list)
{
    try
    {
        string template = txtUcitajTemplate.Text;
        string text2 = "Aneksi";
        if (!System.IO.Directory.Exists(text2))
        {
            System.IO.Directory.CreateDirectory(text2);
        }
        string path = string.Format("{0}.docx", dataGridViewRow.Cells["Name"].Value.ToString());
        string path2 = System.IO.Path.Combine(text2, path);
        using (DocX document = DocX.Load(template))
        {
            string patternstart = Regex.Escape("[");
            string patternend = Regex.Escape("]");
            string regexexpr = patternstart + @"(.*?)" + patternend;
            // document.ReplaceText(regexexpr, dataGridViewRow.Cells[0].Value.ToString());
            // document.ReplaceText(regexexpr, dataGridViewRow.Cells[1].Value.ToString());
            var regex = new regex("[.*?]");
            var matches = regex.matches(input); //your matches: name, name@gmail.com
            foreach (var match in matches) // e.g. you can loop through your matches like this
            {
                document.ReplaceText(match.ToString(), dataGridViewRow.Cells["Name"].Value.ToString());
                document.ReplaceText(match.ToString(), dataGridViewRow.Cells["LastName"].Value.ToString());
            }
            document.SaveAs(path2);                     
        }
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

尝试更改正则表达式,这里的问题看起来基本上与您尝试的相同(关于查找两个字符之间的值)。

正则表达式,用于查找包含在两个字符之间的字符串,同时排除分隔符

如果使用该前提,则遍历所有匹配项。我怀疑您将能够修改您的代码来实现您想要实现的目标。

这是您的问题:

var regex = new regex("[.*?]");

点击此处查看您的RegEx

您正在匹配放在方括号[]之间的任何字符,这意味着您的RegEx将仅从字面上匹配字符.*?

你需要做的是摆脱这些括号:

[.*?]

看到它在这里工作

相关内容

  • 没有找到相关文章

最新更新