在C#中使用Regex在ConcatenatedFileNamesLikeThis之间插入空格?

Bob*_*les 4 c# regex

我们正在尝试从SSRS报告文件名生成用户友好的报告名称,这些名称不能在名称中包含空格,但应该可以使用正则表达式从报告名称生成它们以扫描大写/ nocaps边界和alpha /数字边界.然而,所有上限都使事情复杂化.例如:

ListOfMembers => List Of Members
Weekly123Report => Weekly 123 Report
MembersOfIEETeam => Members Of IEE Team
Run Code Online (Sandbox Code Playgroud)

所以我认为这是最小的规则集;

(a-z0-9)(A-Z)       gets replaced with "$1 $2"
(A-Z)?(A-Z)(a-z)    gets replaced with "$1$2 $3"
(A-Za-z)(0-9)       gets replaced with "$1 $2"
(0-9)(A-Za-z)       gets replaced with "$1 $2"
Run Code Online (Sandbox Code Playgroud)

有可能一下子做到这一点还是需要多次通过?假设我们有一个报告文件名,例如:

WeeklyIEEReportWC20090103SortedByDate
Run Code Online (Sandbox Code Playgroud)

我已经看到SSRS在处理图表上的系列名称时执行类似的操作,它会从连接版本中动态生成它们.

任何信息赞赏!:)

Qta*_*tax 5

我的解释和解决方案:

var input = "WeeklyIEEReportWC20090103SortedByDateXFoo3W3CBar4x";
var re = @"(?!^)(?:[A-Z](?:[a-z]+|(?:[A-Z\d](?![a-z]))*)|\d+)";
string value = Regex.Replace(input, re, " $0");
Run Code Online (Sandbox Code Playgroud)

结果: Weekly IEE Report WC20090103 Sorted By Date X Foo 3 W3C Bar 4x