Hmm, I must still be doing something wrong then, since I am going into an infinite loop, I believe.
Here is the link for reference: https://www.mockaroo.com/6d1b7ba0
So, I created a new dataset, as suggested, and named it "first_letter" with the restriction in the formula field being [this = 'P'] (without the brackets), so that all entries in "first_letter" would be P.
I then went to the other dataset, "first_name", and tweaked the formula for it as such:
while this[0,1] != 'P'
this = from_dataset("Personal", "First Name", first_letter[0,1]: first_name[0,1])
Unfortunately, instead of grabbing a name that starts with P, it goes into an infinite loop.
EDIT: I also see why the regex wasn't working - it was due to the fact that I didn't realize you created a special regex database, and I was just trying to use it as part of the formula for a dataset. Once I realized that, I tried to use a formula for the regex dataset, but that didn't work (since the normal logic couldn't be evaluated alongside the regex, I think?).
EDIT2: Thinking over the function, and your reply, a bit more, are you suggesting I populate a new dataset (or 2) with random names from the mockaroo list, and then select the name that starts with the desired letter from there? / have those random names insert their first letter into another dataset, and from there be able to somehow grab the names that start with the desired letter from the first dataset?