Search code examples
phpregexstringpcre

pcre regex to match first two words, numbers


I need a regular expression to match only the first two words (they may contain letters , numbers, commas and other punctuation but not white spaces, tabs or new lines) in a string. My solution is ([^\s]+\s+){2} but if it matches something like :'123 word' *in '123 word, hello'*, it doesnt work on a string with just two words and no spaces after.

What is the right regex for this task?


Solution

  • You have it almost right:

    (\S+\s+\S+)
    

    Assuming you don't need stronger control on what characters to use.

    If you need to match both two words or only one word only, you may use one of those:

    (\S+\s+\S|\S+)
    (\S+(?:\s+\S+)?)