Software :: Library For Regular Expressions In C++?
Mar 26, 2011
I've began to develop with C++ (Eclipse+Qt) and the first problem I see is that there is not good functions for manipulating strings. if there is a library for manipulating strings with regular expressions?
I'm writing a program that works with text files, and I'm trying to create some filters with grep. I have various questions here, so I'll number them for clarity.
1) First of all, I'd like to know what wc -w is actually returning. The word count is less than what gedit is counting in Document Statistics, so obviously gedit is counting something (like newlines) that wc -w is not
2) Secondly, I was wondering if there was a way to grep x number of words. I'm looking for something like the -m option, but returning a certain number of words instead of lines. For example, to find the first 2000 words, do something like grep -someoption 2000 ".*" or using {1,2000}.
3) Finally, I'm trying to filter out headers and footers of a text file but having no luck. The text files are Project Gutenberg files, so they have standardized headers and footers. Here's an example: [URL]...
The header starts with "The Project Gutenberg EBook of" and ends with the line containing "START OF THIS PROJECT GUTENBERG EBOOK" The footers begin with: "End of the Project Gutenberg EBook of" My problem is, grep can find:
i am trying to create an exclude regular expression for my build.xml. The problem is, that i am trying to find some info on which REs are acceptable/valid for ant... Is ant using standard regular expressions? POSIX ones? Since it is a java-based tool, the "Java REs" are probably valid. I am a little bit confused. If somebody can help me out with the different RE standards, i would be most obliged.
Code: find /Data/ -type f -iname "*7pm*" But this doesn't: Code: find /Data/ -type f -regex *7[Pp][Mm]*
I've tried MANY variations, but I'm getting no error messages, just no returns, and yet the first find, will find the sorts of files I'm looking for. I realise a win is a win, but I'm of the understanding that the -regex switch allows for some really complex use of regular expressions - but I can't even get a very simple one to work,
I can't get this simple regular expression to work for matching emails: 'w*(?:.w*)*@w*(?:.w*)*w{2,5}'
It should be working as I have tested it with regex pal and it works just fine. I think there's a problem with optional character class but I'm not sure.
I am pretty new at this topic but I would like to learn it from example. The first thing I am working on is to modify the command date to be shown as DD/MM/YY only using regular expression but I dont know how to combine what there is in the regexp tutorials online and the syntax for batch scripting. Any help?
Here is what I what. run a file test: ~# ./test Where file test is: #!/bin/bash # DATE=$( date )
[Code]..
Also if you can point me to good regexp tutorials (directed towards batch scripting), that will be great.
Is it possible to point to a two-digit interval with regular expressions?
Background: I'm using mplayer to watch tv shows, that often have episode numbers in their names. I know how to easily add several files to the playlist by using brackets, by typing something like $ mplayer tv/South.Park.S1.E0[1-5]*avi
Is there a way to point to files 06-13 in a single expression?
Lets say I have 20 files named FOOXX, where XX is the number of the file, eg 01, 02 etc. At the moment, if I want to delete all files lower than the number 10, this is easy and I just use a wildcard, eg rm FOO0* However, if I want to delete specific files ina range, eg 13-15, this becomes more difficult. rm FPP[13-15] does not work, and asks me if I wish to delete all files. Likewse rm FOO1[3-5] wishes to delete all files that begin with FOO1 So, what is the best way to delete ranges of files like this? I have tried with both bash and zsh, and I don't think they differ so much for such a basic task?
Here's my need: If Calendar Day= Then FCPeriod= And FCYear= Jan 11 to Feb 1002Current Year of Feb 10 Feb 11 to Mar 1003Current Year of Mar 10 Mar 11 to Apr 1004Current Year of Apr 10 Apr 11 to May 1005Current Year of May 10 May 11 to June 1006Current Year of June 10 June 11 to July 1007Current Year of July 10 July 11 to Aug 1008Current Year of Aug 10 Aug 11 to Sept 1009Current Year of Sept 10 Sept 11 to Oct 1010Current Year of Oct 10 Oct 11 to Nov 1011Current Year of Nov 10 Nov 11 to Dec 1012Current Year of Dec 10 Dec 11 to Jan 1001* Current Year of Jan 10
* Note for Dec 11 - Dec 31, The Next Year to be used IE: Current date is Dec 28th, 2010. Year = 2011 IE: Current date is Jan 8th, 2011, Year = 2011. Looks like I'll need a case statement with some regular expressions...
What I am doing is reading the text from a text document and storing all of the text inside of a ArrayList. I then set one of the values of the Arraylist as a string. I want to use regular expressions find out what the first two characters of the String are. if first two characters = "//" then function(); I only care about the first two characters though. If you need any more information, just ask.
I'm trying to install Google Chrome on Slackware 13.1 (32 bit) and I have a little problem with shared libraries.The google-chrome applications looks for nss libraries with file names ending in apparently non-standard ways (for me and my system, at least): for example, it looks for libnns3.so.1d, but I have libnss3.so, so I created a symbolic link libnss3.so.1d -> libnss3.so. The problem now is that if I run google-chrome as my usual regular user I still get the missing library error, but if I run it as root I don't get the error anymore (well, it still complains about other libraries missing for the same naming reason, but anyway it's able to find the one I just renamed). The permissions seems fine to me:
Code:
/usr/lib# ls -l | grep seamonkey lrwxrwxrwx 1 root root 15 Jun 16 22:03 seamonkey -> seamonkey-2.0.4 drwxr-xr-x 14 root root 4096 Oct 12 10:47 seamonkey-2.0.4
./configure script fails to configure libsf. Please check the following last few lines of configure script error.
But find command shows the following;
It seems the file libdb does exist. man dbopen displays man page for dbopen. I also tried to ln -s /usr/lib/libdb.a and libdb.so /lib dir but all were in vain.
I'm reading about shared, static, and dynamic libraries. What is SDL? Is it static, shared, or dynamic?
I always thought a library would be a lot of .h and .cpp files compiled separately into .o files and then if you compiled your own program you could use the -l parameter to link the library and it was all compiled together. Now I'm not so sure.
I don't even see any SDL .cpp files in my system anywhere. All I have are lots of SDL .h files in /usr/include/SDL and I don't really understand the code in them.
I'm making a wild guess here: SDL is a shared library. SDL itself is NOT compiled into my program, therefore SDL must be on any system my program tries to run on. When I compile and link SDL all it needs is the header files to know what SDL function and objects it can use. And then on every system it uses an already compiled SDL shared library thingy somewhere.
So... where is that part of SDL? All I can find are header files.
I'm thinking the advantage of shared libraries is that someone could say update SDL on their own system and take advantage of the new features without having to download new executables with the new version of SDL compiled into them for every program that uses SDL.
So if I'm making an editor and a game engine and they both use a lot of the same .cpp and .h files that I wrote and I'm tired of updating one and then the other and I need to turn them into a library, then a shared library might be kind of a silly solution. I could just make a static library. Right? Because it's not SDL. Nobody else is ever going to use this library.
im trying to get sed to read through a txt document that contains html and cant get it to copy over my code looks like Code: sed -n '/[width=468 height=60 border=0 /></a></center><hr>]/,/[<br clear=left><hr>]/p' 1.txt > 2.txt This is the code that seemed to have the best chance of working but still all it does is copy the whole txt document over instead of between these 2 expressions
how to use grep with an expression that is constantly changing... basically this is what I am trying to do:
Code: watch "mpstat -P ALL | grep -e '`date +%r`'" which, should show me my CPU usage updated every couple seconds. The grep is being used to omit lines that aren't needed (all the useful lines start with the current time.) Problem is, it seems to execute the 'date +%r' command once.
I would like grep to execute the date command every time the watch command updates.
EDIT: I've found a workaround by putting the
Code: mpstat -P ALL | grep -e "`date +%r`" All in a shell file (that I called cpustat.sh), and then executing watch ./cpustat.sh
Would still like to know if there is an actual solution without having to create a seperate file (and preferably in one line). I have tried using a function to do the mpstat and grep part, but apparently watch doesn't play nice with functions
I've been loosely following this:http://norvig.com/lispy.htmlAnd I have a problem: the parsing function throws an array out of bounds exception. I thought that maybe I'm doing it wrong, so I copy and pasted the code from the page, and still the same error
I am trying to learn more about global expressions and how it is needed in changing stuff in vi and in shell scipting in general.My question is basic:
How can I add a " # " pound sign at the beginning of every line in a file. So if I want to remark out every line in a file, what would be the global expression for that? Is there a global expression cheat sheet?
How can we convert a dynamic library (filename.so) to a static library (filename.a) using gnu gcc . Can we get a static library form a dynamic library . I saw a few post in which the conversion form a static library to a dynamic library is mentioned but, unfortunately, not the other way.