why "aab" matchs "ab" when using reglar expression ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting why "aab" matchs "ab" when using reglar expression ?
# 1  
Old 08-21-2011
why "aab" matchs "ab" when using reglar expression ?

Please see the following code, why "aab" matchs "ab" when using reglar expression ?
Code:
[saturn@saturn-pc new]$ [[ "aab" =~ "ab" ]] && echo "ok" || echo "error";
ok                                   
[saturn@saturn-pc new]$ [[ "aab" =~ "a*b" ]] && echo "ok" || echo "error";
error                          
[saturn@saturn-pc new]$ [[ "aab" =~ "a.b" ]] && echo "ok" || echo "error";
error            
[saturn@saturn-pc new]$ [[ "aab" =~ "aab" ]] && echo "ok" || echo "error";
ok
[saturn@saturn-pc new]$

Thanks!
# 2  
Old 08-21-2011
Hi,

When using metacharacters in a regular expression, remove quotes:
Code:
$ [[ "aab" =~ a*b ]] && echo "ok" || echo "error";
ok
$ [[ "aab" =~ a.b ]] && echo "ok" || echo "error";
ok

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 3  
Old 08-21-2011
Oh, Bash. Well, when you quote the right part of `=~' operator you get string, not a regex. And part of string is matched the whole string.
Code:
$ [[ "aab" =~ a*b ]] && echo "ok" || echo "error"
ok
$ [[ "aab" =~ a.b ]] && echo "ok" || echo "error"
ok
$ [[ "aab" =~ *ab ]] && echo "ok" || echo "error"
error

Look more about it in info bash - "Conditional Constructs".
This User Gave Thanks to yazu For This Post:
# 4  
Old 08-21-2011
Thanks , but I also have a question:
Code:
[saturn@saturn-pc new]$ [[ "aab" =~ ab ]] && echo "ok" || echo "error";
ok
[saturn@saturn-pc new]$ [[ "aab" =~ "ab" ]] && echo "ok" || echo "error";
ok
[saturn@saturn-pc new]$

"aab" should not match ab , Can you tell me why?
# 5  
Old 08-21-2011
Why do you think it shouldn't match?

I think that the substring 'ab' is in 'aab'.

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 6  
Old 08-21-2011
I see, substring also matchs. So I need to add \b besides 'ab' .
Thanks.
Code:
[saturn@saturn-pc new]$ [[ "aabaab" =~ aaa*b ]] && echo "ok" || echo "error"
ok             !!aabaab does not contain aaab, but it matchs, why?!!

# 7  
Old 08-21-2011
[[ "aabaab" =~ aaa*b ]] && echo "ok" || echo "error"
Here, when you include *, it means 0 or more and that is why its matching. It will basically look for aab or aaab or aaaaab etc

[[ "aabaab" =~ aaa+b ]] && echo "ok" || echo "error"
This will look for aaab, aaaab etc

regards,
Ahamed
This User Gave Thanks to ahamed101 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

cshell integer expression from "0000" to "1999"

I have 2000 files named like "file-fr0000.log", "file-fr1999.log"... I wanna generate the file names automatically in the following c shell script: set fr = 0 while ($fr <= 1999) grep "ENERGY" file-fr$fr.log > data.dat @ fr = ( $fr + 1 ) end The above will generate file names... (3 Replies)
Discussion started by: rockytodd
3 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question