D - RegExp Behavior
- Clint Olson (45/45) Dec 19 2003 I don't understand the behavior of the program (with output) below. All...
- Walter (6/51) Dec 19 2003 Try filenameRegExp.test(filename, 0)
- Clint Olson (4/65) Dec 20 2003 Yup, fixed it. Thanks! I see in the source code what is going on. Fix...
I don't understand the behavior of the program (with output) below. All I'm doing is testing all the filenames of the files in the current directory for an expression I know is in several of the names. Only one filename tests positive. Can anyone tell me what is happening? Here is the code (RegExpTest.d) ================================== import std.file; import std.regexp; int main(char[][] args) { char[] testExp = "Exp"; RegExp filenameRegExp = new RegExp(testExp, "m"); char[][] filenames = std.file.listdir("."); printf("Testing filenames in current directory for: %.*s\n", testExp); foreach ( char[] filename; filenames) { int result = filenameRegExp.test(filename); if (result) { printf(" %d Filename match: %.*s\n", result, filename); } else { printf(" %d Filename mis-match: %.*s\n", result, filename); } } return 0; } Here is the (commented) output ======================== Testing filenames in current directory for: Exp 0 Filename mis-match: clean.bat 0 Filename mis-match: compile.bat 0 Filename mis-match: compile_test.bat 0 Filename mis-match: env.bat 0 Filename mis-match: GrepTree.d 0 Filename mis-match: GrepTree.java 0 Filename mis-match: GrepTree.obj 0 Filename mis-match: grep_tree.exe 0 Filename mis-match: grep_tree.map 0 Filename mis-match: RegExpTest.d <-- should pass 1 Filename match: RegExpTest.exe 0 Filename mis-match: RegExpTest.map <-- should pass 0 Filename mis-match: RegExpTest.obj <-- should pass 0 Filename mis-match: test_data 0 Filename mis-match: wc.d 0 Filename mis-match: wc.exe 0 Filename mis-match: wc.map 0 Filename mis-match: wc.obj
Dec 19 2003
Try filenameRegExp.test(filename, 0) "Clint Olson" <Clint_member pathlink.com> wrote in message news:bs03ui$3015$1 digitaldaemon.com...I don't understand the behavior of the program (with output) below. AllI'mdoing is testing all the filenames of the files in the current directoryfor anexpression I know is in several of the names. Only one filename testspositive.Can anyone tell me what is happening? Here is the code (RegExpTest.d) ================================== import std.file; import std.regexp; int main(char[][] args) { char[] testExp = "Exp"; RegExp filenameRegExp = new RegExp(testExp, "m"); char[][] filenames = std.file.listdir("."); printf("Testing filenames in current directory for: %.*s\n", testExp); foreach ( char[] filename; filenames) { int result = filenameRegExp.test(filename); if (result) { printf(" %d Filename match: %.*s\n", result, filename); } else { printf(" %d Filename mis-match: %.*s\n", result, filename); } } return 0; } Here is the (commented) output ======================== Testing filenames in current directory for: Exp 0 Filename mis-match: clean.bat 0 Filename mis-match: compile.bat 0 Filename mis-match: compile_test.bat 0 Filename mis-match: env.bat 0 Filename mis-match: GrepTree.d 0 Filename mis-match: GrepTree.java 0 Filename mis-match: GrepTree.obj 0 Filename mis-match: grep_tree.exe 0 Filename mis-match: grep_tree.map 0 Filename mis-match: RegExpTest.d <-- should pass 1 Filename match: RegExpTest.exe 0 Filename mis-match: RegExpTest.map <-- should pass 0 Filename mis-match: RegExpTest.obj <-- should pass 0 Filename mis-match: test_data 0 Filename mis-match: wc.d 0 Filename mis-match: wc.exe 0 Filename mis-match: wc.map 0 Filename mis-match: wc.obj
Dec 19 2003
Yup, fixed it. Thanks! I see in the source code what is going on. Fixing the docs to include that form of the test() method would be useful for future RegExp users :) In article <bs08b7$527$1 digitaldaemon.com>, Walter says...Try filenameRegExp.test(filename, 0) "Clint Olson" <Clint_member pathlink.com> wrote in message news:bs03ui$3015$1 digitaldaemon.com...I don't understand the behavior of the program (with output) below. AllI'mdoing is testing all the filenames of the files in the current directoryfor anexpression I know is in several of the names. Only one filename testspositive.Can anyone tell me what is happening? Here is the code (RegExpTest.d) ================================== import std.file; import std.regexp; int main(char[][] args) { char[] testExp = "Exp"; RegExp filenameRegExp = new RegExp(testExp, "m"); char[][] filenames = std.file.listdir("."); printf("Testing filenames in current directory for: %.*s\n", testExp); foreach ( char[] filename; filenames) { int result = filenameRegExp.test(filename); if (result) { printf(" %d Filename match: %.*s\n", result, filename); } else { printf(" %d Filename mis-match: %.*s\n", result, filename); } } return 0; } Here is the (commented) output ======================== Testing filenames in current directory for: Exp 0 Filename mis-match: clean.bat 0 Filename mis-match: compile.bat 0 Filename mis-match: compile_test.bat 0 Filename mis-match: env.bat 0 Filename mis-match: GrepTree.d 0 Filename mis-match: GrepTree.java 0 Filename mis-match: GrepTree.obj 0 Filename mis-match: grep_tree.exe 0 Filename mis-match: grep_tree.map 0 Filename mis-match: RegExpTest.d <-- should pass 1 Filename match: RegExpTest.exe 0 Filename mis-match: RegExpTest.map <-- should pass 0 Filename mis-match: RegExpTest.obj <-- should pass 0 Filename mis-match: test_data 0 Filename mis-match: wc.d 0 Filename mis-match: wc.exe 0 Filename mis-match: wc.map 0 Filename mis-match: wc.obj
Dec 20 2003