Doc: work a little harder on the initial examples for regex matching.
authorTom Lane <[email protected]>
Mon, 1 Feb 2021 21:38:52 +0000 (16:38 -0500)
committerTom Lane <[email protected]>
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 f30eaa3e4bac65ba7f1bca4605db4dd1c0b8f21e..081f04ce1a9fb200dd5458d94f38a68019e98f4c 100644 (file)
@@ -5329,7 +5329,7 @@ substring('foobar' similar '#"o_b#"%' escape '#')    <lineannotation>NULL</linea
         String matches regular expression, case sensitively
        </para>
        <para>
-        <literal>'thomas' ~ '.*thom.*'</literal>
+        <literal>'thomas' ~ 't.*ma'</literal>
         <returnvalue>t</returnvalue>
        </para></entry>
        </row>
@@ -5343,7 +5343,7 @@ substring('foobar' similar '#"o_b#"%' escape '#')    <lineannotation>NULL</linea
         String matches regular expression, case insensitively
        </para>
        <para>
-        <literal>'thomas' ~* '.*Thom.*'</literal>
+        <literal>'thomas' ~* 'T.*ma'</literal>
         <returnvalue>t</returnvalue>
        </para></entry>
        </row>
@@ -5357,8 +5357,8 @@ substring('foobar' similar '#"o_b#"%' escape '#')    <lineannotation>NULL</linea
         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>
 
@@ -5371,8 +5371,8 @@ substring('foobar' similar '#"o_b#"%' escape '#')    <lineannotation>NULL</linea
         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>
@@ -5406,10 +5406,12 @@ substring('foobar' similar '#"o_b#"%' escape '#')    <lineannotation>NULL</linea
     <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>