This is not possible natively in Web Intelligence. Since X is variable in length and Z is a fixed length the only way see solving this is by looking for that space in front of Y which is possible if we reverse the string. However, there is no reverse function in WebI. Could you do this in your universe or in free-hand SQL?
This is what it would look like in SQL Server...
DECLARE @MyString VARCHAR(100);
DECLARE @Length INT;
DECLARE @Y_Index INT;
DECLARE @Y_Length INT;
DECLARE @Z_Index INT;
SET @MyString = 'sodium chloride 0.9% + Potassium chloride 50 mL/hr';
-- get total string length
sET @Length = LEN(@MyString);
-- find index (starting position) of Y
SET @Y_Index = @Length - CHARINDEX(' ', REVERSE(@MyString), 7) + 2;
-- find index (starting position) of Z
SET @Z_Index = @Length - CHARINDEX(' ', REVERSE(@MyString)) + 2;
SELECT
@MyString AS [MyString]
, REVERSE(@MyString) AS [MyStringReversed]
, @Length AS [MyStringLength]
, @Y_Index AS [Y Index]
, @Z_Index AS [Z Index]
, RTRIM(SUBSTRING(@MyString, @Y_Index, @Z_Index - @Y_Index)) AS [Y];
Here is a link see it in action.