我正在动态编辑一个正则表达式以匹配 pdf 中的文本,它可以在某些行的末尾包含连字符。
例子:
源字符串:
"consecuti?vely"
替换规则:
.Replace("cuti?",@"cuti?(-\s+)?")
.Replace("con",@"con(-\s+)?")
.Replace("consecu",@"consecu(-\s+)?")
期望的输出:
"con(-\s+)?secu(-\s+)?ti?(-\s+)?vely"
替换规则是动态构建的,这只是一个导致问题的例子。
执行这种多次替换的最佳解决方案是什么,它将产生所需的输出?
到目前为止,我考虑过使用 Regex.Replace 并压缩单词以替换为可选 (-\s+)?在每个字符之间,但这不起作用,因为要替换的单词在正则表达式上下文中已经包含特殊含义的字符。
编辑:我当前的代码,当替换规则重叠时不起作用,如上面的示例
private string ModifyRegexToAcceptHyphensOfCurrentPage(string regex, int searchedPage)
{
var originalTextOfThePage = mPagesNotModified[searchedPage];
var hyphenatedParts = Regex.Matches(originalTextOfThePage, @"\w+\-\s");
for (int i = 0; i < hyphenatedParts.Count; i++)
{
var partBeforeHyphen = String.Concat(hyphenatedParts[i].Value.TakeWhile(c => c != '-'));
regex = regex.Replace(partBeforeHyphen, partBeforeHyphen + @"(-\s+)?");
}
return regex;
}