regular expression [^ ]


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting regular expression [^ ]
# 1  
Old 01-30-2008
regular expression [^ ]

Hi,
Could anybody explain why [^ ] will evaluate to true for a string that is not null, not empty string, and has at least one non-space char?

My understanding is that ^ means exclude all chars inside []. So I thought it should mean anything except space.

This seems a big mystery to me.
# 2  
Old 01-31-2008
What language or shell script are we talking about here? Can we also see some code? Maybe your usage is wrong.
# 3  
Old 01-31-2008
There's no mystery, '[^ ]' means match any single character that is not a space.
# 4  
Old 02-01-2008
Quote:
Originally Posted by Ygor
There's no mystery, '[^ ]' means match any single character that is not a space.
I thought the same as you, "match any single char that is not space". But we are wrong.

It matches any string that is not null, not empty string and not only space. But I don't understand how that could be. I need someone to explain it.
# 5  
Old 02-02-2008
Hard to answer when you do not define the language you are using, there is no examples of how you are using it or the data you are using.

[^ ] is a negated space, not to be confused with other non-visible characters like tabs or newlines or other stuff I probably am not aware of:

Code:
@t = ('m', "\t", '1', " ", "\n");
for my $i (0..$#t) {
    if ($t[$i] =~ /[^ ]/) {
       print qq{Number $i is true "$t[$i]"\n};
    }
}

the above is true for all except " ", which is a space. \t (tab) and \n (newline) are not included in [^ ] but they would be in [^\s].

Code:
@t = ('m', "\t", '1', " ", "\n");
for my $i (0..$#t) {
    if ($t[$i] =~ /[^\s]/) {
	    print qq{Number $i is true "$t[$i]"\n};
	 }
}

Of course the above is perl. But since you have not mentioned (after being asked) what language you are using, maybe I just wasted my time.
# 6  
Old 02-07-2008
Isn't Regular Expression generic for all languages? I am under the impression that Regular Expression use the same syntax even across platform, ie. same for unix, windows or linux. I am using it in webMethods here.
# 7  
Old 06-17-2008
Actually regular expression support is not uniform in all languages. Perl compatible regular expressions (also called PCRE) are a very common set of regular expressions compatible with how Perl supports regular expressions. Regular expression support in the webMethods 'Flow' language is not explicitly stated as PCRE according to their documentation (but may be).

The original poster may have been asking about this statement from an article here: (because I hit this forum when researching the same topic)
--
Regular Expressions for Integration Server
wMUsers: For webMethods Professionals -- Knowledge Base | Regular Expressions for Integration Server
--

/[^ ]/ -- [matches a variable that is] is not null, is not empty, and contains at least one non-space character.

My question was also similar - how come this does _not_ match the empty string, or null? I think the answer is a square bracket pair ('[...]') must match some character, and the '^ ' just excludes the space character from matching. Is this correct?

I modified the Perl code helpfully posted earlier, by adding an empty string ("") as the last case:
Code:
#!/usr/bin/perl

@t = ('m', "\t", '1', " ", "\n","");
for my $i (0..$#t) {
    if ($t[$i] =~ /[^ ]/) {
       print qq{Number $i is true "$t[$i]"\n};
    } else {
       print qq{Number $i is NOT true "$t[$i]"\n};
    }
}

Running this, I get these results:
Code:
Number 0 is true "m"
Number 1 is true "      "
Number 2 is true "1"
Number 3 is NOT true " "
Number 4 is true "
"
Number 5 is NOT true ""

So does result #5 confirm my understanding above --- the square bracket pair ('[...]') _must_ match some character, and the '^ ' just excludes the space character from matching.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expression

I would like to extract "JDBC Thin Client" from (PROGRAM=JDBC Thin Client); and "C:\Python26\python.exe" from (PROGRAM=C:\Python26\python.exe); "txm_v_awsrf_db.pr" from (PROGRAM=txm_v_awsrf_db.pr). if input line like "(PROGRAM=)", it return unknown. Would you help suggest a regular... (4 Replies)
Discussion started by: cstsang
4 Replies

2. Shell Programming and Scripting

Regular expression

Can someone please explain me what does this mean? ^{1,50}$ (1 Reply)
Discussion started by: Anupam_Halder
1 Replies

3. UNIX for Dummies Questions & Answers

Regular expression help

Hi, I am quite knew to scripting and I am trying to get a regular expression to work to check that a user enters a valid version number such as 1 or 1.1 or 12.3 etc. I dont seem to be able to get it to work as it picks up versions such as 1.......2. I only want it to work with a single dot.... (12 Replies)
Discussion started by: frodo61
12 Replies

4. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

5. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

6. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

7. UNIX for Dummies Questions & Answers

ls with regular expression

I currently list and sort all the files in a directory which begin with an Upper Case C and end with the extension '#finished#'. Here is the command I use: ls -tr $currentDir/*.#finished# what i need to do now is list all the files in a directory that begin with upper case C and end... (3 Replies)
Discussion started by: rkgudde
3 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. Programming

What does the regular expression ['(^[^~]+~).*'] mean?

What does the regular expression +~).*'] mean while using it with regexec.When the string "RCHNUSNT35C~rs07/ASM-RS07" is used with the regular expression +~).*'] regexec gives an error. I know what regexec does,but i do not understand what this expression means wrt to this string... any help... (2 Replies)
Discussion started by: anupamar
2 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question