Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何查找具有特定字符的文件名_Excel_Matlab_Select_Wolfram Mathematica - Fatal编程技术网

Excel 如何查找具有特定字符的文件名

Excel 如何查找具有特定字符的文件名,excel,matlab,select,wolfram-mathematica,Excel,Matlab,Select,Wolfram Mathematica,我有数百个文本文件,其名称如下: D14 J4N4-BAPN_633nm_20x_100%累积点1和D14 J4N5-NOBAPN_633nm_20x_100%累积点3,如下图所示: 我想选择名称包含BAPN的文件作为一个组,而NOBAPN作为另一个组。但是BAPN和NOBAPN包含与BAPN相同的字符。我怎样才能做到这一点 Simple regex aughta做你想做的事: (BAPN)|(NOBAPN) 你可以在这里查看- 这会将这些精确的字符串捕获为单独的捕获,而不会重叠。如果可以使

我有数百个文本文件,其名称如下:
D14 J4N4-BAPN_633nm_20x_100%累积点1
D14 J4N5-NOBAPN_633nm_20x_100%累积点3
,如下图所示:


我想选择名称包含
BAPN
的文件作为一个组,而
NOBAPN
作为另一个组。但是
BAPN
NOBAPN
包含与
BAPN
相同的字符。我怎样才能做到这一点

Simple regex aughta做你想做的事:

(BAPN)|(NOBAPN)
你可以在这里查看-


这会将这些精确的字符串捕获为单独的捕获,而不会重叠。

如果可以使用连字符,则很容易

Select[{"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1", 
  "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 3"},
 StringMatchQ[#, "*-BAPN*"] &]
否则,使用
补码
获得不太具体的情况

stringlist = {
   "D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 2",
   "D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1",
   "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 3",
   "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 2",
   "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 1"};

posnobapn = Position[stringlist , _?(StringContainsQ[#, "NOBAPN"] &), Heads -> False];
posbapn = Position[stringlist , _?(StringContainsQ[#, "BAPN"] &), Heads -> False];

listbapn = Extract[stringlist , Complement[posbapn, posnobapn]]
此外,还介绍了Nieminen正则表达式的一个应用

regexcases = StringCases[stringlist, RegularExpression["(BAPN)|(NOBAPN)"]];

Pick[stringlist, regexcases /. {"BAPN"} -> True]
您还可以使用dir命令对所需文件进行排序

要使用BAPN获取文件名,请执行以下操作:

set1 = dir('*-BAPN*.txt') ;
使用NOBAPN获取文件名

set2 = dir('*-NOBAPN*.txt') ;

set1和set2将是结构

如果没有一组共同的字符,你会怎么做?一组文件名包含“NOBAPN”,另一组(包含“BAPN”,但*不包含“NOBAPN”)。您想要excel、matlab和mathematica的解决方案吗?展示你在每种语言中尝试过的东西,或者至少澄清你的期望。知道这些很有用。在我的回答中,我已经演示了这个正则表达式在Mathematica中的应用。
{"D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 3",
 "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 2",
 "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 1"}
regexcases = StringCases[stringlist, RegularExpression["(BAPN)|(NOBAPN)"]];

Pick[stringlist, regexcases /. {"BAPN"} -> True]
{"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 2",
 "D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1"}
Pick[stringlist, regexcases /. {"NOBAPN"} -> True]
{"D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 3",
 "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 2",
 "D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 1"}
set1 = dir('*-BAPN*.txt') ;
set2 = dir('*-NOBAPN*.txt') ;