¿Por qué con esta expresión regular?
https://regex101.com/r/wYUZCO/1
(category\s+(\w+))(\s*=\s*)?(?:\s+(\w+))?(?:\s+(\w+))?puedo igualar
category fruits pear orangepero no
category fruits = pear orangeEstás haciendo coincidir el espacio después de = dos veces; primero usando \s* después de = en su expresión regular, y luego con \s+ en (?:\s+(\w+)) .
Puede resolver esto fácilmente de muchas maneras diferentes, pero esta es probablemente la más simple:
(category\s+(\w+))(\s*=\s*)?(?:\s*(\w+))?(?:\s+(\w+))?
(nota, cambié (?:\s+(\w+)) a (?:\s*(\w+)) , para hacer coincidir un espacio 0+ veces en lugar de 1+ veces).