字符串有几种变体:
"txt 文件`(*.txt)|*.txt|所有文件(*.*)|*.*`"
"图像文件`|*.jpg;*.jpeg;*.png;`"
“Excel 文件 `(*.xls, *.xlsx)|*.xls;*.xlsx|CSV 文件 (*.csv)|*.csv`”
子字符串可以以任意字符(空格、','、'.'、'|'、';')结尾——
没关系。
尝试了以下选项:“[^*].{3,4}(.?);”、“[^*]+.(.?);
”。
我需要一个正则表达式来获取string[] = {.jpg, .jpeg, ...}
,最好不要重复元素。
最佳答案
你真的需要正则表达式吗?
首先,如果您按 |
进行拆分,结果中的每个奇数条目都是一个扩展列表。然后,您可以通过 ;
拆分该 again 以获取扩展名,然后您可以将其展平为单个序列并修剪起始 *
的每个元素>。最后,获取不同的集合并将其放入数组中。
这一切都可以通过 Split
和 Linq 来完成:
var extensions = filter.Split('|', StringSplitOptions.RemoveEmptyEntries)
.Where((x, i) => i % 2 != 0)
.SelectMany(x => x.Split(';', StringSplitOptions.RemoveEmptyEntries))
.Select(x => x.TrimStart('*'))
.Distinct()
.ToArray();
从拆分中删除空条目可确保如果您以分隔符结尾,它将被忽略。
在 .NET Fiddle 上查看它的实际应用.
关于c# - 查找正则表达式以获取具有文件扩展名的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71433303/