match groups of words and digits regex in any order -



match groups of words and digits regex in any order -

suppose have next string:

"7 apples , 13 oranges"

/(\d+).*?(apples)/i

the above regex match 7 apples if alternate order , numbers "45 oranges , 9 apples".it match first digit 45 rather digit corresponding apples, want.

how can write regex match , homecoming match groups of digits + apples if write sentence in next 2 orders:

"7 apples , 13 oranges" "13 oranges 52 apples"

ie, i'd match 7 apples, match groups of 7 , apples , 52 apples match groups 52 , apples.

where got wrong in /(\d+).*?(apples)/i ?

.*? though lazy matching matches digit next apple

which means string

"13 oranges 52 apples"

it matches 13 till apple @ end of string, since . matches anything

see link illustration : http://regex101.com/r/ul5ex0/2

how correct?

since symbol seperating digit , apple space, can utilize \s character instead of . as

(\d+)\s(apples)

matches 7 , 52 seen in http://regex101.com/r/ul5ex0/3

for safe side can have

(\d+)\s+(apples)

any number of spaces between digit , apple

a word boundary \b can used safety

regex

Comments

Popular posts from this blog

java Multi query from Mysql using netbeans -

c# - DotNetZip fails with "stream does not support seek operations" -

c++ - StartServiceCtrlDispatcher don't can access 1063 error -