Date: 2004-09-29T15:28:19
   Editor: SebastianBazley <[EMAIL PROTECTED]>
   Wiki: Apache JMeter Wiki
   Page: RegularExpressions
   URL: http://wiki.apache.org/jakarta-jmeter/RegularExpressions

   Moved from FAQ and added example

Change Log:

------------------------------------------------------------------------------
@@ -1,5 +1,28 @@
 == Regular Expressions in JMeter ==
 
+JMeter includes the pattern matching software [http://jakarta.apache.org/oro/ Apache 
Jakarta ORO].
+
+There is some documentation for this on the Jakarta web-site.
+
+There is also documentation on an older incarnation of the product at 
[http://www.savarese.org/oro/docs/OROMatcher/index.html OROMatcher User's guide], 
which might prove useful. 
+
+=== Overview ===
+
+The pattern matching is very similar to the pattern matching in Perl. A full 
installation of Perl will include plenty of documentation on regular expressions - 
look for perlrequick, perlretut, perlre, perlreref. O'Reilly sell a book called 
"Mastering Regular Expressions" by Jeffrey Friedl which will tell you all you need to 
know (and a lot more) about regular expressions. 
+
+There are also a couple of sample chapters available on their web-site covering REs 
in Java and .NET, and the Java chapter has a 
[http://www.oreilly.com/catalog/regex2/chapter/ch08.pdf section on ORO (PDF)] - worth 
a look.
+
+It is worth stressing the difference between "contains" and "matches", as used on the 
[http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Response_Assertion
 Response Assertion] test element:
+ *  "contains" means that the regular expression matched at least ''some'' part of 
the target, so 'alphabet' "contains" 'ph.b.' because the regular expression matches 
the substring 'phabe'.
+ *  "matches" means that the regular expression matched the ''whole'' target. So 
'alphabet' is "matched" by 'al.*t'. In this case, it is equivalent to wrapping the 
regular expression in {{{^}}} and {{{$}}}, viz '^al.*t$'. However, this is not always 
the case. For example, the regular expression 'alp|.lp.*' is "contained" in 
'alphabet', but '''does not match''' 'alphabet'.
+
+Why? Because when the pattern matcher finds the sequence 'alp' in 'alphabet', it 
stops trying any other combinations - and 'alp' is not the same as 'alphabet', as it 
does not include 'habet'.
+
+Note: unlike Perl, there is no need to (i.e. do not) enclose the regular expression 
in //.
+So how does one use the Perl modifiers ismx etc if there is no trailing /?
+The solution is to use Perl5 extended regular expressions, i.e. /abc/i becomes (?i)abc
+
+
 === Links to regex resources ===
 
 http://www.regular-expressions.info/tutorial.html
@@ -12,5 +35,17 @@
 
 === Examples ===
 
-Feel free to add some useful examples ...
+Suppose you want to match the following portion of a web-page: {{{name="file" 
value="readme.txt"}}} and you want to extract {{{readme.txt}}}.
+
+A suitable reqular expression would be:
+
+name="file" value="{{{(.+?)}}}"
+
+The special characters above are:
+
+ * {{{(}}} and {{{)}}} - these enclose the portion of the match string to be returned
+
+ * {{{.}}} - match any character. {{{+}}} - one or more times. {{{?}}} - don't be 
greedy, i.e. stop when first match succeeds
 
+Note: without the {{{?}}}, the {{{.+}}} would continue past the first {{{"}}} until 
it found the last possible {{{"}}} - probably not what was intended.
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to