diff --git a/setup_cfg_fmt.py b/setup_cfg_fmt.py
index 44d3cb3..d9f84c8 100644
--- a/setup_cfg_fmt.py
+++ b/setup_cfg_fmt.py
@@ -236,7 +236,7 @@ def _normalize_req(req: str) -> str:
     return f'{normalized};{envs}'
 
 
-BASE_NAME_REGEX = re.compile(r'[^!=><\s@]+')
+BASE_NAME_REGEX = re.compile(r'[^!=><\s@~]+')
 REQ_REGEX = re.compile(r'(===|==|!=|~=|>=?|<=?|@)\s*([^,]+)')
 
 

diff --git a/tests/setup_cfg_fmt_test.py b/tests/setup_cfg_fmt_test.py
index 097f081..ceba336 100644
--- a/tests/setup_cfg_fmt_test.py
+++ b/tests/setup_cfg_fmt_test.py
@@ -231,6 +231,7 @@ def test_rewrite(input_s, expected, tmpdir):
         pytest.param('req05 <= 2,!=1', 'req05!=1,<=2', id='<= cond at end'),
         pytest.param('req13 !=2, >= 7', 'req13!=2,>=7', id='>= cond at end'),
         pytest.param('req14 <=2, >= 1', 'req14>=1,<=2', id='b/w conds sorted'),
+        pytest.param('req15~=2', 'req15~=2', id='compatible release'),
     ),
 )
 def test_normalize_lib(lib, expected):

Wrongly formating "compatible release" clause
```diff
diff --git a/setup.cfg b/setup.cfg
index efc3a0f..662e52c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -43,15 +43,15 @@ console_scripts =
 [options.extras_require]
 doc =
     furo
-    sphinx~=3.0
-    sphinx-autodoc-typehints~=1.10
-    sphinxcontrib-autoprogram~=0.1.0
+    sphinx-autodoc-typehints~~=1.10
+    sphinxcontrib-autoprogram~~=0.1.0
+    sphinx~~=3.0
 test =
-    filelock~=3.0
+    filelock~~=3.0
     pytest>=5,<=6
-    pytest-cov~=2.0
+    pytest-cov~~=2.0
     pytest-mock>=2,<=3
-    pytest-xdist~=1.34
+    pytest-xdist~~=1.34
 typing =
     mypy==0.790
     typing-extensions>=3.7.4.3
```

https://www.python.org/dev/peps/pep-0440/#compatible-release
tests/setup_cfg_fmt_test.py::test_normalize_lib[compatible
tests/setup_cfg_fmt_test.py::test_ver_type_ok tests/setup_cfg_fmt_test.py::test_ver_type_error tests/setup_cfg_fmt_test.py::test_ver_type_not_a_version tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[foo-[Ff][Oo][Oo]] tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[FOO-[Ff][Oo][Oo]] tests/setup_cfg_fmt_test.py::test_case_insensitive_glob[licen[sc]e-[Ll][Ii][Cc][Ee][Nn][SsCc][Ee]] tests/setup_cfg_fmt_test.py::test_noop tests/setup_cfg_fmt_test.py::test_rewrite_requires[install_requires-normalizes tests/setup_cfg_fmt_test.py::test_rewrite_requires[setup_requires-normalizes tests/setup_cfg_fmt_test.py::test_rewrite[orders tests/setup_cfg_fmt_test.py::test_rewrite[normalizes tests/setup_cfg_fmt_test.py::test_rewrite[sorts tests/setup_cfg_fmt_test.py::test_rewrite[normalize tests/setup_cfg_fmt_test.py::test_normalize_lib[no tests/setup_cfg_fmt_test.py::test_normalize_lib[whitespace tests/setup_cfg_fmt_test.py::test_normalize_lib[<= tests/setup_cfg_fmt_test.py::test_normalize_lib[>= tests/setup_cfg_fmt_test.py::test_normalize_lib[b/w tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.rst-text/x-rst] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.markdown-text/markdown] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README.md-text/markdown] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[README-text/plain] tests/setup_cfg_fmt_test.py::test_adds_long_description_with_readme[readme.txt-text/plain] tests/setup_cfg_fmt_test.py::test_readme_discover_prefers_file_over_directory tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENSE] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENCE] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[LICENSE.md] tests/setup_cfg_fmt_test.py::test_sets_license_file_if_license_exists[license.txt] tests/setup_cfg_fmt_test.py::test_license_does_not_match_directories tests/setup_cfg_fmt_test.py::test_rewrite_sets_license_type_and_classifier tests/setup_cfg_fmt_test.py::test_rewrite_identifies_license tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[already tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[weird tests/setup_cfg_fmt_test.py::test_python_requires_left_alone[not tests/setup_cfg_fmt_test.py::test_strips_empty_options_and_sections[only tests/setup_cfg_fmt_test.py::test_strips_empty_options_and_sections[entire tests/setup_cfg_fmt_test.py::test_guess_python_requires_python2_tox_ini tests/setup_cfg_fmt_test.py::test_guess_python_requires_tox_ini_dashed_name tests/setup_cfg_fmt_test.py::test_guess_python_requires_ignores_insufficient_version_envs tests/setup_cfg_fmt_test.py::test_guess_python_requires_from_classifiers tests/setup_cfg_fmt_test.py::test_min_py3_version_updates_python_requires tests/setup_cfg_fmt_test.py::test_min_py3_version_greater_than_minimum tests/setup_cfg_fmt_test.py::test_min_version_removes_classifiers tests/setup_cfg_fmt_test.py::test_python_requires_with_patch_version tests/setup_cfg_fmt_test.py::test_classifiers_left_alone_for_odd_python_requires tests/setup_cfg_fmt_test.py::test_min_py3_version_less_than_minimum tests/setup_cfg_fmt_test.py::test_rewrite_extras tests/setup_cfg_fmt_test.py::test_imp_classifiers_from_tox_ini tests/setup_cfg_fmt_test.py::test_imp_classifiers_no_change tests/setup_cfg_fmt_test.py::test_imp_classifiers_pypy_only