简体   繁体   中英

Regular expression with an = and a ;

I'm trying to use a regular expression to find all substrings that start with an equals sign ( = ) and ends with a semicolon ( ; ) with any number of characters in between. It should be something like this =*;

For some reason, the equals is not registering. Is there some sort of escape character that will make the regex notice my equals sign?

I'm working in Java if that has any bearings on this question.

This may be what you are looking for. You need to specify a character set or wild card character that you are applying the asterisk to.

"=([^;]*);"

You can also use the reluctant quantifier:

"=(.*?);"

Using the parenthesis you now have groups. I believe the first group is the whole entire match, and group[1] is the group found within the parenthesis.

The code may look something like:

Regex r = new Regex("=([^;]*);");
Match m = r.Match(yourData);
while (m.Success) {
    string match = m.Groups[1];
    // match should be the text between the '=' and the ';'.
}

This looks for "any number of = signs, including 0"

=*;

If you want "= followed by any number of other characters" you want

=.*;

However, that will match greedily - if you want lazy matching (so that it stops one group when it finds the next semicolon) you might want:

=.*?;

The regex you provided would match ; , ===; , ..., ================; . How about =.*; (or =.*?; if non-greedy is needed)?

像=。*;

学习Java中regexp的一个很好的资源: sun的关于regexp的书

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM