Separating data from string representation of objects, with added extras
Type hinting
Instead of having helpdocs declare the types of function parameters, why not go with type hinting?
Complexity
Your code currently has too many moving parts. You define 2 different functions to parse the data, and they both need to be called in chain. This should be done by a single parsing function.
Let the parser get data text, then the parser should be handling first parsing using pipe and later using the numerical ranges.
Selection from a list
Your randomize_by_pipe shuffles the list, and selects the 0th value. You can instead let random.choice do the job.
range parsing
I think range parsing can be improved a little. How about the following flow:

Remove [ and ] from the given text.
Split from ,.
For each section of the split, try parsing as float (or int, depending on your dataset)
In case of float conversion error, let the rand_no_from_string get a value.

regex
You have a regex, but you're not making full/elegant use of it. Instead of matches, you can group the results, and operate on those groups. The pattern itself can also be a little optimised:
\d+(?:\.\d+)?-\d+(?:\.\d+)?


A rewrite, for eg:
from re import sub, Match
from random import choice, randint


def randomise_range(match: Match):
    given_range = match.group(0).split(&quot;-&quot;)
    low, high = map(float, given_range)
    if low &gt; high:
        low, high = high, low
    if low.is_integer():
        return str(randint(int(low), int(high)))
    multiplier = 10 ** len(given_range[0].split(&quot;.&quot;)[-1])
    low = int(low * multiplier)
    high = int(high * multiplier)
    return str(randint(low, high) / multiplier)


def extract_range(text: str = None):
    if not text:
        return text
    return sub(r&quot;\d+(?:\.\d+)?-\d+(?:\.\d+)?&quot;, randomise_range, text)


def parse(text: str = None):
    if not text:
        return text
    selection = choice(text.split(&quot;|&quot;))
    if selection[0] in ('[', '('):
        return extract_range(selection)
    return selection


if __name__ == &quot;__main__&quot;:
    examples = (
        &quot;(1-3,1,1)&quot;,
        &quot;(0.2-0.4,1,1)&quot;,
        &quot;foo|bar|foobar&quot;,
        &quot;(108-100,0.25-0.75,100)|Foo|Bar|[123,234,234-250]&quot;,
        &quot;[1-2,1,2]|foo|bar|[1,8-10,99]&quot;,
    )
    for text in examples:
        print(parse(text))