I am new to regular expressions. While exploring it I found that result of the regular expression [.^;] and [;] are same and am trying to figure out an explanation. String is Hello;World As per my knowledge, ^ is for negation so shouldn't it skip the next character to it which is ';' in this case?
            Asked
            
        
        
            Active
            
        
            Viewed 622 times
        
    3 Answers
2
            [.^;] doesn't do what you expect as ^ is treated as literal ^ only not negation.
To negate it use ^ at 1st position inside character class:
[^.;]
- [.^;]becomes a character class that matches literals- .OR- ^OR- ;
- [^.;]becomes a negation character class that matches anything but literals- .OR- ;
- [;]is also a character class that matches literal- ;only
 
    
    
        anubhava
        
- 761,203
- 64
- 569
- 643
- 
                    appreciate the explanation @anubhava.. also I found this question helpful.. http://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group – Tejas Sep 10 '14 at 08:46
1
            
            
        ^ only negates character groups if it is the first character in a group.
[.^;] will match any of the three characters in the group (a literal period, a caret or a semicolon). On the other hand, [^.;] will match anything not in the group (any letter, any digit, anything else but a literal period or semicolon).
 
    
    
        knittl
        
- 246,190
- 53
- 318
- 364
0
            
            
        They are not the same.
A carat ^ only means negation when it's the first character in a character class.
This regex [.^;] means "either a literal dot or a carat or a semi-colon"
This regex [;] means "a semi-colon".
 
    
    
        Bohemian
        
- 412,405
- 93
- 575
- 722
 
    