Einfach, wenn Sie den Bindestrich verwenden können.
Select[{"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1",
"D14 J4N5-NOBAPN_633nm_20x_100%_30accu_10s_point 3"},
StringMatchQ[#, "*-BAPN*"] &]
{"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1"}
Ansonsten Complement
verwenden, um den weniger konkreten Fall zu erhalten.
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]]
{"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 2",
"D14 J4N4-BAPN_633nm_20x_100%_30accu_10s_point 1"}
listnobapn = Extract[stringlist , posnobapn]
{"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"}
Auch eine Anwendung des regulären Ausdrucks des Nieminen.
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"}
Wie würdest du es machen, wenn es * keine * gemeinsamen Zeichen gäbe? Ein Satz von Dateinamen enthält "NOBAPN" und der andere Satz (enthält "BAPN", aber * enthält kein "NOBAPN"). –
und Sie wollen Lösungen für Excel, Matlab und Mathematica?Zeigen Sie, was Sie in jeder Sprache versucht haben, oder klären Sie zumindest, was Sie erwarten. – agentp