-- version 1
set fileName to "New Wave (NEWW01)"
set baseName to item 2 of my decoupe(fileName, {"(", ")"}) --> "NEWW01"
-- but it may return a wrong result
set fileName to "New (blahblah) Wave (NEWW01)"
set baseName to item 2 of my decoupe(fileName, {"(", ")"}) --> "blahblah"
-- so need more steps
set splitted to my decoupe(fileName, {"(", ")"}) --> {"New ", "blahblah", " Wave ", "NEWW01", ""}
set baseName to item (((count splitted) div 2) * 2) of splitted
-- and it's not perfect
set fileName to "New (z(blahblah) Wave (NEWW01)"
set splitted to my decoupe(fileName, {"(", ")"}) --> {"New ", "blahblah", " Wave ", "NEWW01", ""}
set baseName to item (((count splitted) div 2) * 2) of splitted --> ""
-- version 2
set backwards to reverse of text items of fileName --> {")", "1", "0", "W", "W", "E", "N", "(", " ", "e", "v", "a", "W", " ", ")", "h", "a", "l", "b", "h", "a", "l", "b", "(", "z", "(", " ", "w", "e", "N"}
set myChars to {}
repeat with i from 2 to count backwards
set aChar to item i of backwards as string
if aChar is "(" then
exit repeat
else
set end of myChars to aChar
end if
end repeat
myChars --> {"1", "0", "W", "W", "E", "N"}
-- you wrote : I want everything between ( and )
set baseName to my recolle(reverse of myChars, {""}) -->"NEWW01"
-- if you want to get the paretheses, add one instruction
set baseName to "(" & baseName & ")" -- ADDED
#=====
on recolle(l, d)
local oTIDs, t
set {oTIDs, AppleScript's text item delimiters} to {AppleScript's text item delimiters, d}
set t to l as text
set AppleScript's text item delimiters to oTIDs
return t
end recolle
#=====
on decoupe(t, d)
local oTIDs, l
set {oTIDs, AppleScript's text item delimiters} to {AppleScript's text item delimiters, d}
set l to text items of t
set AppleScript's text item delimiters to oTIDs
return l
end decoupe
#=====
Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) mercredi 24 juin 2020 21:29:57