diff --git a/pymbolic/parser.py b/pymbolic/parser.py
index cea1e2a7159ce5f54d5a8493c447d9f4f18e26dc..7a48d13ff6cec4eccdd2b0a7d5b29eaea075ce76 100644
--- a/pymbolic/parser.py
+++ b/pymbolic/parser.py
@@ -105,17 +105,17 @@ class Parser:
             (_imaginary, (_float, pytools.lex.RE("j"))),
             (_float, ("|",
                 # has a letter tag
-                pytools.lex.RE(r"[+-]?[0-9]+([a-zA-Z]+)"),
+                pytools.lex.RE(r"[0-9]+([a-zA-Z]+)"),
                 # has digits before the dot (after optional)
                 pytools.lex.RE(
-                    r"[+-]?[0-9]+\.[0-9]*([eEdD][+-]?[0-9]+)?([a-zA-Z]*)"),
+                    r"[0-9]+\.[0-9]*([eEdD][+-]?[0-9]+)?([a-zA-Z]*)"),
                 pytools.lex.RE(
-                    r"[+-]?[0-9]+(\.[0-9]*)?[eEdD][+-]?[0-9]+([a-zA-Z]*)\b"),
+                    r"[0-9]+(\.[0-9]*)?[eEdD][+-]?[0-9]+([a-zA-Z]*)\b"),
                 # has digits after the dot (before optional)
                 pytools.lex.RE(
-                    r"[+-]?[0-9]*\.[0-9]+([eEdD][+-]?[0-9]+)?([a-zA-Z]*)"),
+                    r"[0-9]*\.[0-9]+([eEdD][+-]?[0-9]+)?([a-zA-Z]*)"),
                 pytools.lex.RE(
-                    r"[+-]?[0-9]*\.[0-9]+[eEdD][+-]?[0-9]+([a-zA-Z]*)\b"))),
+                    r"[0-9]*\.[0-9]+[eEdD][+-]?[0-9]+([a-zA-Z]*)\b"))),
             (_int, pytools.lex.RE(r"[0-9]+")),
             (_plus, pytools.lex.RE(r"\+")),
             (_minus, pytools.lex.RE(r"-")),
diff --git a/test/test_pymbolic.py b/test/test_pymbolic.py
index 7df9f1420658ac9abce309b144059cb7e0ce0958..00fb007016e6e8f4fa02b436f59dae46bf02f3b8 100644
--- a/test/test_pymbolic.py
+++ b/test/test_pymbolic.py
@@ -221,6 +221,11 @@ def test_parser():
     print(repr(parse("3::1")))
     print(repr(parse(":5:1")))
     print(repr(parse("3:5:1")))
+    print(repr(parse("g[i,k]+2.0*h[i,k]")))
+    print(repr(parse("g[i,k]+(+2.0)*h[i,k]")))
+    print(repr(parse("a - b - c")))
+    print(repr(parse("-a - -b - -c")))
+    print(repr(parse("- - - a - - - - b - - - - - c")))
 
     print(parse("3::1"))