开发者

Regular expression with an = and a ;

开发者 https://www.devze.com 2022-12-20 13:29 出处:网络
I\'m trying to use a regular expression to f开发者_运维知识库ind all substrings that start with an equals sign (=) and ends with a semicolon (;) with any number of characters in between. It should be

I'm trying to use a regular expression to f开发者_运维知识库ind 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)?


An excellent source for learning about regexp in Java: sun's book about regexp


Something like =.*;

0

精彩评论

暂无评论...
验证码 换一张
取 消