Do unconfirmed transactions expire after some time? Sometimes confirmation process is very slow. I think that is because of the price of the fee. In that time, is it possible to cancel the unconfirmed transaction and re-send with higher transaction fee?  Are there any expiry features? E.g. the transaction will be canceled after 7 days?

As far as I read other posts, the answer is NO. If so, do I need to wait for the confirmation forever? For instance, when I set a zero transaction fee accidentally.
In addition to Mark S.'s answer, since Bitcoin Core 0.12 there actually is an expiration in the mempool, which evicts unconfirmed transactions after N hours, where N is set by -mempoolexpiry, and defaults to 72 hours.

This is not a reliable feature, as wallets (and really, anyone) can rebroadcast the transaction, but helps keeping the mempool fresh.