20080119

Extract file name from a path using a regular expression (example in C++/Boost Regex).

Έστω ότι έχουμε το dos path:

C:\dir1\dir2\dir3\myfile.txt

ή το unix path

/dir1/dir2/dir3/myfile.txt

Για να τραβήξουμε το όνομα του αρχείου αρκεί η παρακάτω κανονική έκφραση: "[^\\^/]+$" ή οποία μεταφράζεται ως βρες οποιοδήποτε substring χαρακτήρων εκτός του \ και / που βρίσκεις από στο τέλος ($).

Αν χρεισιμοποιούμε το Regular Expressions της βιβλιοθήκης boost σε περιβάλλον C++ ακουλουθεί ένα παράδειγμα (η κανονική έκφραση μπαίνει ως "[^\\\\^/]+$" (επειδή \ = \\)):

#include "boost/regex.hpp"

void main() {

string str="C:\\dir1\\dir2\\dir3\\myfile.txt";
boost::regex reg("[^\\\\^/]+$");
boost::smatch m;

string filename;
if (boost::regex_search(str,m,reg))
// filename <- "myfile.txt"
filename=m.str();
else
filename="not found";

return;
}


boost::regex reg("^[^\\.]+");
boost::regex reg("[^\\.]+$");

Δεν υπάρχουν σχόλια:

eggs.in.art (my non-technical blog)