我正在尝试在逗号分隔的列表中搜索文件名:
text.txt、temp_doc.doc、template.tmpl、empty.zip
我使用 Java 的正则表达式实现。输出要求如下:
- 只显示文件名而不是它们各自的扩展名
- 排除以“temp_”开头的文件
它应该看起来像:
文本
模板
空的
到目前为止,我已经设法编写或多或少令人满意的正则表达式来应对第一项任务:
[^\\.,]++(?=\\.[^,]*+,?+)
我相信使其符合第二个要求的最佳选择是使用环视构造,但不确定如何编写可靠和优化的表达式。虽然下面的正则表达式似乎确实可以满足要求,但如果没有其他原因,它显然是一个有缺陷的解决方案,它依赖于显式的最大文件名长度。
(?!temp_|emp_|mp_|p_|_)(?<!temp_\\w{0,50})[^\\.,]++(?=\\.[^,]*+,?+)
PS我只研究了几天的正则表达式,所以请不要嘲笑这个新手风格的过于复杂的代码:)