Are you using Nested Styles or GREP styles? I couldn't get your original to work with Nested Styles, so for sake of argument let's assume you didn't use those :)
I get your original result with this GREP style:
^.+?x{20}x{20}
(I actually used two simple spaces, but this way they show up in the post.) It says, “from the start of the current paragraph, grab as little as you can up to two spaces” — only less verbose.
The problem lies in the caret ^ — according to your average GREP manual, it stands for “Beginning of Paragraph”. (Wait, let me check. … Yup, ID's Online Help on “Metacharacters for searching” says exactly that.) Now what is the 'beginning of a paragraph'? Why, surely that's (1) at the start of a story (or table cell or footnote), or (2) immediately after a Hard Return! .. Unfortunately, no. It's true for Nested Styles, but not for GREP (both when searching or in a style)!
I guess it's one of those things that came with GREP. Adobe's programmers didn't write it from the ground up, but opted to use a well-tried-and-tested open source library (“boost”, https://www.boost.org). They added a few bits here and there around the edges (most notably, shortcuts for a lot of InDesign's special characters), but the main bulk was left unchanged. Looking at the source code, one can forgive them for overlooking the fact that “n” — the soft return — gets treated very much the same way as “r” — the hard return. Historically, there always has been some overlap between these two codes; it's totally “normal” to find text files containing either “n” or “r” at the end of each paragraph (and only Microsoft could come up with a scheme that proscribes “rn” — or was it the other way around? –, and woe on you if you feed an edit box the wrong order!). So boost takes the safe route and treats them exactly the same: both 'r' and 'n' signify “the Beginning of a Paragraph”.
Unfortunately, GREP styles rely entirely on what the boost code says; and the boost code says, “hey, here is the start of a paragraph”. Fortunately, ID does recognize the difference if you explicitly test for either an 'r' or an 'n' code. The 'r' code is a bit of a trouble maker inside a GREP style (because “GREP styles do not span multiple paragraphs”, and I guess they get filtered out of the expression at an early stage), but if you are “at the beginning of a paragraph” you can test if you are 'next to a soft return'!
So this GREP Style code will work for you:
^(?<!n).+?x{20}x{20}
— at the “Beginning of Paragraph” position, there may be 'nothing' to the left (at the start of a story), or there may be a hard return. So if you only match if there is “not a soft return”, you are safe!
[*] One could make a case to Adobe that this is faulty behavior, and submit it as a Bug Report, since it's contrary to expectations and different from what Nested Styles do.