On 2/28/2023 1:07 PM, Jen Kris wrote:

Using str.startswith is a cool idea in this case.  But is it better than regex for performance or reliability?  Regex syntax is not a model of simplicity, but in my simple case it's not too difficult.

The trouble is that we don't know what your case really is. If you are talking about a short pattern like your example and a small text to search, and you don't need to do it too often, then my little code example is probably ideal. Reliability wouldn't be an issue, and performance would not be relevant. If your case is going to be much larger, called many times in a loop, or be much more complicated in some other way, then a regex or some other approach is likely to be much faster.


Feb 27, 2023, 18:52 by li...@tompassin.net:

    On 2/27/2023 9:16 PM, avi.e.gr...@gmail.com wrote:

        And, just for fun, since there is nothing wrong with your code,
        this minor change is terser:

                    example = 'X - abc_degree + 1 + qq + abc_degree + 1'
                    for match in re.finditer(re.escape('abc_degree + 1')
                    , example):

        ... print(match.start(), match.end())
        ...
        ...
        4 18
        26 40


    Just for more fun :) -

    Without knowing how general your expressions will be, I think the
    following version is very readable, certainly more readable than
    regexes:

    example = 'X - abc_degree + 1 + qq + abc_degree + 1'
    KEY = 'abc_degree + 1'

    for i in range(len(example)):
    if example[i:].startswith(KEY):
    print(i, i + len(KEY))
    # prints:
    4 18
    26 40

    If you may have variable numbers of spaces around the symbols, OTOH,
    the whole situation changes and then regexes would almost certainly
    be the best approach. But the regular expression strings would
    become harder to read.
-- https://mail.python.org/mailman/listinfo/python-list



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to