<div dir="ltr"><br><br>On Saturday, February 3, 2018 at 8:10:38 PM UTC-5, Steven D'Aprano wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On Sun, Feb 04, 2018 at 10:54:53AM +1100, Chris Angelico wrote:
<br>
<br>> Picking up this one as an example, but this applies to all of them:
<br>> the transformation you're giving here is dangerously flawed. If there
<br>> are any regex special characters in the strings, this will either bomb
<br>> with an exception, or silently do the wrong thing. The correct way to
<br>> do it is (at least, I think it is):
<br>> 
<br>> re.match("|".join(map(re.<wbr>escape, strings)), testme)
<br>> 
<br>> With that gotcha lurking in the wings, I think this should not be
<br>> cavalierly dismissed with "just 'import re' and be done with it".
<br>
<br>Indeed.
<br>
<br>This is not Perl and "just use a regex" is not a close fit to the 
<br>culture of Python.
<br>
<br>Regexes are a completely separate mini-language, and one which is the 
<br>opposite of Pythonic. Instead of "executable pseudo-code", regexes are 
<br>excessively terse and cryptic once you get past the simple examples. 
<br>Doing anything complicated using regexes is painful.
<br>
<br>Even Larry Wall has criticised regex syntax for choosing poor defaults 
<br>and information density. (Rarely used symbols get a single character, 
<br>while frequently needed symbols are coded as multiple characters, so 
<br>Perlish syntax has the worst of both worlds: too terse for casual users, 
<br>too verbose for experts, hard to maintain for everyone.)
<br>
<br>Any serious programmer should have at least a passing familiarity with 
<br>regexes. They are ubiquitous, and useful, especially as a common 
<br>mini-language for user-specified searching.
<br>
<br>But I consider regexes to be the fall-back for when Python doesn't 
<br>support the kind of string matching operation I need, not the primary 
<br>solution. I would never write:
<br>
<br>    re.match('start', text)
<br>    re.search('spam', text)
<br>
<br>when 
<br>
<br>    text.startswith('start')
<br>    text.find('spam') 
<br>
<br>will do. I think this proposal to add more power to the string methods 
<br>is worth some serious consideration.
<br></blockquote><div><br></div><div>Completely agree with the sentiment.  I don't know about this proposal, but complicated regular expressions are never a good solution even when they are the best solution.  </div><blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<br>
<br>
<br>-- 
<br>Steve
<br>______________________________<wbr>_________________
<br>Python-ideas mailing list
<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="H7LdQrkwBAAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">Python...@python.org</a>
<br><a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank" rel="nofollow" onmousedown="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fmail.python.org%2Fmailman%2Flistinfo%2Fpython-ideas\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFj1EaNHnVmh20FnFPoUi4J-MpfQw';return true;" onclick="this.href='https://www.google.com/url?q\x3dhttps%3A%2F%2Fmail.python.org%2Fmailman%2Flistinfo%2Fpython-ideas\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFj1EaNHnVmh20FnFPoUi4J-MpfQw';return true;">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a>
<br>Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank" rel="nofollow" onmousedown="this.href='http://www.google.com/url?q\x3dhttp%3A%2F%2Fpython.org%2Fpsf%2Fcodeofconduct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHJOrArSUDKkjrnthO6_CznMzkPsA';return true;" onclick="this.href='http://www.google.com/url?q\x3dhttp%3A%2F%2Fpython.org%2Fpsf%2Fcodeofconduct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHJOrArSUDKkjrnthO6_CznMzkPsA';return true;">http://python.org/psf/<wbr>codeofconduct/</a>
<br></blockquote></div>