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