I am trying to match the word that appears immediately after a number - in the sentence below, it is the word "meters".
The tower is 100 meters tall.
Here's the pattern that I tried which didn't work:
\d+\s*(\b.+\b)
But this one did:
\d+\s*(\w+)
The first incorrect pattern matched this:
The tower is 100 meters tall.
I didn't want the word "tall" to be matched. I expected the following behavior:
\d+
match one or more occurrence of a digit
\s*
match any or no spaces
(
start new capturing group
\b
find the word/non-word boundary
.+
match 1 or more of everything except new line
\b
find the next word/non-word boundary
)
stop capturing group
The problem is I don't know tiddly-twat about regex, and I am very much a noob as a noob can be. I am practicing by making my own problems and trying to solve them - this is one of them. Why didn't the match stop at the second break (\b)
?
This is Python flavored
Here's the regex101 test link of the above regex.