how about this?
echo '<value>4 hr 3 sec</value>'
| grep -oP '(?<=<value>)(\d+\s+hr)?(\s*\d+\s+min)?(\s*\d+\s+sec)?(?=</value>)'
4 hr 3 sec
echo '<value>3 sec</value>' |
grep -oP '(?<=<value>)(\d+\s+hr)?(\s*\d+\s+min)?(\s*\d+\s+sec)?(?=</value>)'
3 sec