Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Doc: work a little harder on the initial examples for regex matching.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 1 Feb 2021 21:38:52 +0000 (16:38 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 1 Feb 2021 21:38:52 +0000 (16:38 -0500)
Writing unnecessary '.*' at start and end of a POSIX regex doesn't
do much except confuse the reader about whether that might be
necessary after all.  Make the examples in table 9.16 a tad more
realistic, and try to turn the next group of examples into something
self-contained.

Per gripe from rmzgrimes.  Back-patch to v13 because it's easy.

Discussion: https://postgr.es/m/161215841824.14653.8969016349304314299@wrigleys.postgresql.org

doc/src/sgml/func.sgml

index 6f1133365b8e5434833dafdbe80a0fc87ab39b09..2f4a5904e10371fadf34fc4120fb7ad3c50f4753 100644 (file)
@@ -5266,7 +5266,7 @@ substring('foobar' from '#"o_b#"%' for '#')    <lineannotation>NULL</lineannotat
         String matches regular expression, case sensitively
        </para>
        <para>
-        <literal>'thomas' ~ '.*thom.*'</literal>
+        <literal>'thomas' ~ 't.*ma'</literal>
         <returnvalue>t</returnvalue>
        </para></entry>
        </row>
@@ -5280,7 +5280,7 @@ substring('foobar' from '#"o_b#"%' for '#')    <lineannotation>NULL</lineannotat
         String matches regular expression, case insensitively
        </para>
        <para>
-        <literal>'thomas' ~* '.*Thom.*'</literal>
+        <literal>'thomas' ~* 'T.*ma'</literal>
         <returnvalue>t</returnvalue>
        </para></entry>
        </row>
@@ -5294,8 +5294,8 @@ substring('foobar' from '#"o_b#"%' for '#')    <lineannotation>NULL</lineannotat
         String does not match regular expression, case sensitively
        </para>
        <para>
-        <literal>'thomas' !~ '.*thomas.*'</literal>
-        <returnvalue>f</returnvalue>
+        <literal>'thomas' !~ 't.*max'</literal>
+        <returnvalue>t</returnvalue>
        </para></entry>
        </row>
 
@@ -5308,8 +5308,8 @@ substring('foobar' from '#"o_b#"%' for '#')    <lineannotation>NULL</lineannotat
         String does not match regular expression, case insensitively
        </para>
        <para>
-        <literal>'thomas' !~* '.*vadim.*'</literal>
-        <returnvalue>t</returnvalue>
+        <literal>'thomas' !~* 'T.*ma'</literal>
+        <returnvalue>f</returnvalue>
        </para></entry>
        </row>
       </tbody>
@@ -5343,10 +5343,12 @@ substring('foobar' from '#"o_b#"%' for '#')    <lineannotation>NULL</lineannotat
     <para>
      Some examples:
 <programlisting>
-'abc' ~ 'abc'    <lineannotation>true</lineannotation>
-'abc' ~ '^a'     <lineannotation>true</lineannotation>
-'abc' ~ '(b|d)'  <lineannotation>true</lineannotation>
-'abc' ~ '^(b|c)' <lineannotation>false</lineannotation>
+'abcd' ~ 'bc'     <lineannotation>true</lineannotation>
+'abcd' ~ 'a.c'    <lineannotation>true &mdash; dot matches any character</lineannotation>
+'abcd' ~ 'a.*d'   <lineannotation>true &mdash; <literal>*</literal> repeats the preceding pattern item</lineannotation>
+'abcd' ~ '(b|x)'  <lineannotation>true &mdash; <literal>|</literal> means OR, parentheses group</lineannotation>
+'abcd' ~ '^a'     <lineannotation>true &mdash; <literal>^</literal> anchors to start of string</lineannotation>
+'abcd' ~ '^(b|c)' <lineannotation>false &mdash; would match except for anchoring</lineannotation>
 </programlisting>
     </para>