If your transaction is not being confirmed, and you did not use replace-by-fee (you almost certainly did not, very few bitcoin wallets support this) then you will have to wait for the network nodes to drop your transaction from their mempool before you can attempt to resend your transaction.
After 72 hours of being unconfirmed, most mempools will drop it (nodes with default settings). If volume is particularly high and mempools are completely filled up (beyond 300MB for default settings) then it will be dropped sooner. However there is no way to know if your transaction is being dropped or not, beyond just going to common blockchain explorers and seeing if they have it. Blockchain.info has very liberal node configurations, they keep almost every transaction. Chain.so is an example of one with conservative settings, they are likely to drop your transaction before other explorers and nodes.
However, when your transaction is finally dropped (presuming it is not confirmed), the bitcoins will not be back in your wallet. Well, technically, they never left your wallet, but your wallet thinks they did and so you cannot make a new transaction with them. Wallets keep their own internal ledger of transactions to and from your addresses – when this ledger does not match actual confirmed blockchain data is when you get problems and your bitcoins appear to be in limbo, your wallet says they are spent, the blockchain says they are not. Some wallets allow you to rebuild your transaction history – this should "return" the bitcoins to your wallet and allow them to be spendable again (though again, note the bitcoins never really left your wallet if they were never confirmed, they were always there your wallet just did not think so).
But some bitcoin wallets do not have an option to rebuild your transaction history from scratch from the blockchain. Almost all wallets let you export your private keys in some form though, or backup your wallet or seed phrase. If it is a seed phrase, you can usually uninstall and reinstall the bitcoin wallet software, and use the seed phrase to restore your wallet and this will force it to rebuild transaction history. Most wallets that use a backup file instead of a seed phrase though, will keep the transaction history in the same backup file along with your private keys, so uninstall/reinstalling and restoring your backup would not help.
In that case, it is advised to extract your private keys from your wallet and import them into a different wallet. If you do not know how to do this, search on Google for your particular bitcoin wallet software (this is something every bitcoin owner should know how to do anyway).
Now that you have gotten your wallet in a state where it agrees with the blockchain, you should be able to resend a transaction with a higher fee to get confirmed. It happens quite often that your original transaction, while paying a good fee, did not confirm because one of the inputs it used was unconfirmed due to paying too low of a fee. In this case, you may be able to take advantage of a recently merged node policy called Child-pays-for-parent (CPFP) and send your transaction with a much higher fee than it would otherwise require, in order to pay the too-low fee of the unconfirmed input so that it confirms. However, if the unconfirmed input has itself been dropped by most of the network's mempool, then assuming the unconfirmed input is not under your control then there is little you can do other than tell the person who sent you that unconfirmed transaction to follow the above steps, as CPFP will not work if the miners don't have the original unconfirmed input's transaction details.