# [Jelly], <s>&nbsp;52 51&nbsp;</s> 49 [bytes]

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

    Ṫ
    Ñ;”s
    Ṫḣ-3
    UṪw“)s(”⁼1
    “µḣ⁴µ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?
    
    “µḣ⁴µuʠg*»ḲċḢ‘×Ç‘ - Link 5, categorise: two words (list of lists)
    “µḣ⁴µuʠg*»        - compression of string "a 1" + word " an" + word " one"
              Ḳ       - split on spaces = ["a", "1", "an", "one"]
                Ḣ     - head (the first word)
               ċ      - count occurrences (of head in the list - either 0 or 1)
                 ‘    - 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)"]
    
    ⁶;ḲÇĿ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 link at the given index as a monad:
       Ç     -     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/1DBHs1gDKPGocY8hF5B3aCtQ9lHjlkNbS08tSNc6tPvhjk1Huh/uWPSoYcbh6YfbgRTXo8Zt1kDhw@1H9hsdW@L9//9/38Ti5PwSjWJNhcSiVAUjhaTEPCAE8/NSFAwVclILilKTMxJL80BiCnp6egoKSaUlCvl5qQqZxQq5mcVA8cy8dIVEheLEUhAnMT0VpLQoPydHB2xIYp5CYkFRPtiAkvx8RQA "Jelly – Try It Online"