Wow! This is a tough one.
Try this...
Use the * wildcard with Like to find all the records with a specific string.
For example:
Select fieldname from tablename where fieldname like "*" & "ED20" & "*"
If you wanted to have Access prompt you for the value of the string so you would have to adjust it each time it would look like this:
Select fieldname from tablename where fieldname like "*" & [EnterValue] & "*"
Then, using that recordset that is created from the above query, use the Instr function to parse out the values you don't want and leave you with the values you do want.
If you wanted to take out ED20 from DF15ED20WS15 then it would look like this if you created an expression in your query:
NewValue: Left$([FieldName],InStr(1,[FieldName],"ED20"

+1) & Right$([FieldName],Len([FieldName])-InStr(1,[Fieldname],"ED20"

-1)
Be sure to replace FieldName with the appropriate field name in your table.
You would need to run the queries separately.
First run the query that finds all records with the specified string.
Then, run the query that uses the Instr function.
Hope this helps.