# [Jelly], 52 [bytes]

<sup>Jelly has not got one regex(s) atom</sup>

    Ṫ
    Ñ;”s
    Ṫḣ-3
    UṪw“)s(”⁼1
    e€“µḣ⁴µuʠg*»Ḳ¤Ḣ‘×Ç‘µĿ
    ⁶;ḲÇ2ƤK

A full program accepting a string (using Python formatting if multiline or containing quotes) and printing the output.

**[Try it online!][TIO-j884vnh0]**

### How?

    Ṫ - Link 1, tail: two words (list of lists)
    Ṫ - tail
    
    Ñ;”s - Link 2, tail and replace last three chars with an 's': two words (list of lists)
    Ñ    - call the next link (3) as a monad
      ”s - literal 's'
     ;   - concatenate
    
    Ṫḣ-3 - Link 3, tail and remove the last three chars: two words (list of lists)
    Ṫ    - tail
      -3 - literal minus three
     ḣ   - head from index (1-indexed and modular)
    
    UṪw“)s(”⁼1 - Link 4, tail ends with "(s)"?: two words (list of lists)
    U          - upend (reverse each word)
     Ṫ         - tail
       “)s(”   - literal [')', 's', '('] - that is "(s)" reversed
      w        - index of first sublist equal to that or 0 if not found
             1 - literal one
            ⁼  - equal?
    
    e€“µḣ⁴µuʠg*»Ḳ¤Ḣ‘×Ç‘µĿ - Link 5, categorise and transform: two words (list of lists)
                 ¤        - nilad followed by link(s) as a nilad:
      “µḣ⁴µuʠg*»          -   compression of string "a 1" + word " an" + word " one"
                Ḳ         -   split on spaces = ["a", "1", "an", "one"]
    e€                    - exists in (that) for €ach (word in the two words) 1 if so, else 0
                  Ḣ       - head (the result for the first of the two words)
                   ‘      - increment
                     Ç    - call the last link (4) as a monad - i.e. f(two words)
                    ×     - multiply
                      ‘   - increment - so we have: 1 for ["1", "blah"],
                          -             2 for ["blah", "blah(s)"] or 3 for ["1", "blah(s)"]
                       µ  - monadic chain separation
                        Ŀ - call the link at that index as a monad - i.e. f(two words)
    
    ⁶;ḲÇ2ƤK - Main link: list of characters, the string
    ⁶       - literal space character
     ;      - concatenate (place a space at the beginning as we want to inspect pairs)
      Ḳ     - split on spaces (giving an empty list at the start)
        2Ƥ  - for all infixes of length two:
       Ç    -   call the last link (5) as a monad
          K - join the result with spaces
            - implicit print


[Jelly]: https://github.com/DennisMitchell/jelly
[bytes]: https://github.com/DennisMitchell/jelly/wiki/Code-page
[TIO-j884vnh0]: https://tio.run/##y0rNyan8///hzlVchydaP2qYW8wFZD/csVjXmCsUyCp/1DBHs1gDKPGocY8hV@qjpjVAkUNbgSoeNW45tLX01IJ0rUO7H@7YdGjJwx2LHjXMODz9cDuQOrT1yH6uR43brIFSh9uNji3x/v//v29icXJ@iUaxpkJiUaqCkUJSYh4Qgvl5KQqGCjmpBUWpyRmJpXkgMQU9PT0FhaTSEoX8vFSFzGKF3MxioHhmXrpCokJxYimIk5ieClJalJ@TowM2JDFPIbGgKB9sQEl@viIA "Jelly – Try It Online"