Home > Net >  Inconsistency between regex and python search
Inconsistency between regex and python search

Time:09-26

I'm doing a small regex that catch all the text before the numbers. https://regex101.com/r/JhIiG9/2

import re

regex = "^(.*?)(\d*([-.]\d*)*)$"
message = "Myteeeeext  0.366- 0.3700"
result = re.search(regex, message)
print(result.group(1))

https://www.online-python.com/a7smOJHBwp

When I run this regex instead of just showing the first group which is Myteeeeext I'm getting Myteeeeext 0.366- but in regex101 it shows only

CodePudding user response:

Try this Regex, [^\d.-]

It catches all the text before the numbers

import re

regex = "[^\d.-] "
message = "Myteeeeext  0.366- 0.3700 notMyteeeeext"
result = re.search(regex, message)
print(f"'{result.group()}'")

Outputs:

'Myteeeeext  '

tell me if its okay for you...

CodePudding user response:

Your regex:

regex = "^(.*?)(\d*([-.]\d*)*)$"

doesn't allow for the numbers part to have any spaces, but your search string:

message = "Myteeeeext  0.366- 0.3700"

does have a space after the dash, so this part of your regex:

(.*?)

matches up to the second number.

It doesn't look like your test string in the regex101.com example you gave has a space, so that's why your results are different.

  • Related