Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

RegExp

matcher.maches() returns false

Why this code fails ?

Because of you think you do something like "Oh dear it contains the word!", but you're confusing matches with find

From Javadoc: http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Matcher.html#matches()

public boolean matches()
Attempts to match the entire region against the pattern.
...

So "/\.groovy/" is just a subsequence.
You must use

What is the difference between =~ and ==~ ?

Pattern, Matcher ?

A pattern is not very usefull alone. He's just waiting input to process through a matcher.

Matcher can say a lot of thing to you:

  • if the entire input sequence matches the pattern, with matcher.matches() ;
  • if just a subsequence of the input sequence matches the pattern, with matcher.find().

A matcher with /groovy/ pattern finds a matching subsequence in the 'my groovy buddy' sequence.
On the contrary the whole sequence doesn't match the pattern.

Application: to filter a list of names.

A little tilde headache ? Remember like this

~

the pattern

=~

roughly as the pattern (easy to write)

==~

more than roughly, exactly as the pattern (think hard...)

  • No labels