繁体   English   中英

正则表达式匹配除字符以外的所有内容

[英]regex to match everything except character

我有一个包含以下内容的有效负载:

。 xMB2

我正在寻找提取patrick-test-file.txt的文件名

我可以通过使用它来接近,但是它继续包含所有内容(包括ascii字符)

[\\\\](.*?)x�SMB2

结果是: 为捕获组。

我如何匹配文件名中的字符(可以是可变长度的任何内容,并且可以包含字母数字字符)? 纯正则表达式可能吗?

任何帮助深表感谢。

有时,您只是无法执行与语言无关的正则表达式来完成某些任务。 有时(通常)执行一系列字符串函数的性能更高。

我个人不会接受任何具有硬编码值的解决方案,例如x SMB2

如果只想使用正则表达式,则可以首先选择File-Name部分,如下所示: (([-\\w\\d.\\\\]+)[^-\\w\\d.\\\\]?)+ ,然后继续将[^-\\w\\d.\\\\]替换为""

老实说,鉴于细节有限,最佳功能如下:

var fileName = "\patrick-test-file.txt";

但是开个玩笑,而且细节有限,您最好的选择是做几个字符串函数:

var yuckyString = @"����\�p�a�t�r�i�c�k�-�t�e�s�t�-�f�i�l�e�.�t�x�t������x�SMB2";
var fileNameArea = yuckyString.Split(new[] { "��" }, StringSplitOptions.RemoveEmptyEntries)[0];
var fileName = fileNameArea.Replace("�", "");

当然,没有列出语言,所以我正在使用C#。 同样,如果那些特殊字符存在不规则之处,答案也会改变。 在信息有限的情况下,模式似乎很清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM