【发布时间】:2017-04-20 16:18:30
【问题描述】:
具有以下字符串:
- AAA.BBBBBBBB 等 CCCCCC DDDDDDD 31.03.2012.xlsx
- AAA.BBBBBBBB ZZZZ et CCCCCC UUUU DDDDDDD 15.02.2015.xlsx
- AAA.BBBBBBBB DDDD et CCCCCC 23 DDDDDDD 03.11.2017.xlsx
我想把字符串分成三部分,比如第一句:
- AAA.BBBBBBBB 等 CCCCCC DDDDDDD
- 31.03.2012
- .xlsx
第三句:
- AAA.BBBBBBBB DDDD et CCCCCC 23 DDDDDDD
- 03.11.2017
- .xlsx
对于第一句话,我尝试了以下正则表达式:
^((\w+[\.\s]){5})(\d{2}\.\d{2}\.\d{4})(.+)$
如果我将 5 更改为 +,它不起作用。
^((\w+[\.\s]){+})(\d{2}\.\d{2}\.\d{4})(.+)$
我怎样才能做到这一点?
PD:在使用 C# 应用程序进行实际工作之前,我正在 Sublime 中进行测试。
【问题讨论】:
-
删除
{}括号仅使用+符号所以^((\w+[\.\s])+)(\d{2}\.\d{2}\.\d{4})(.+)$。顺便说一句,当你想测试你的正则表达式时,我推荐你 regex101.com -
你不需要正则表达式,因为左边的 15 个字符总是相同的长度
-
SublimeText 3 使用 PCRE 引擎,而 C# 使用 .NET - 只有当你的模式是基本的时才可以。
-
如果将
{5}更改为{5,},您认为会发生什么? -
@prospector 说了什么。可以通过lastIndexOf获取文件扩展名,日期为之前的10个字符,名称为剩余部分。使用正则表达式可能最终会导致更多问题,然后解决。这只是基本的子字符串操作。
标签: c# regex regex-group