diff --git a/README.rst b/README.rst
index 59f1018..3665905 100644
--- a/README.rst
+++ b/README.rst
@@ -345,6 +345,7 @@ the pattern, the actual match represents the shortest successful match for
 
 **Version history (in brief)**:
 
+- 1.12.0 Do not assume closing brace when an opening one is found (thanks @mattsep)
 - 1.11.1 Revert having unicode char in docstring, it breaks Bamboo builds(?!)
 - 1.11.0 Implement `__contains__` for Result instances.
 - 1.10.0 Introduce a "letters" matcher, since "w" matches numbers
diff --git a/parse.py b/parse.py
index b5d543f..bff5f7f 100644
--- a/parse.py
+++ b/parse.py
@@ -345,6 +345,7 @@ the pattern, the actual match represents the shortest successful match for
 
 **Version history (in brief)**:
 
+- 1.12.0 Do not assume closing brace when an opening one is found (thanks @mattsep)
 - 1.11.1 Revert having unicode char in docstring, it breaks Bamboo builds(?!)
 - 1.11.0 Implement `__contains__` for Result instances.
 - 1.10.0 Introduce a "letters" matcher, since "w" matches numbers
@@ -415,7 +416,7 @@ See the end of the source file for the license of use.
 '''
 
 from __future__ import absolute_import
-__version__ = '1.11.1'
+__version__ = '1.12.0'
 
 # yes, I now have two problems
 import re
@@ -885,7 +886,7 @@ class Parser(object):
                 e.append(r'\{')
             elif part == '}}':
                 e.append(r'\}')
-            elif part[0] == '{':
+            elif part[0] == '{' and part[-1] == '}':
                 # this will be a braces-delimited field to handle
                 e.append(self._handle_field(part))
             else:

diff --git a/test_parse.py b/test_parse.py
index d48159a..7ebe378 100755
--- a/test_parse.py
+++ b/test_parse.py
@@ -771,6 +771,10 @@ class TestBugs(unittest.TestCase):
         self.assertEqual(r[0], 'ALICE')
         self.assertEqual(r[1], 42)
 
+    def test_unmatched_brace_doesnt_match(self):
+        r = parse.parse("{who.txt", "hello")
+        self.assertIsNone(r)
+
 
 # -----------------------------------------------------------------------------
 # TEST SUPPORT FOR: TestParseType
@@ -793,7 +797,6 @@ class TestParseType(unittest.TestCase):
         result = parser.parse(text)
         self.assertEqual(result, None)
 
-
     def test_pattern_should_be_used(self):
         def parse_number(text):
             return int(text)

Unmatched brace can still result in a match
Certain patterns can still result in a match even when there are unmatched braces. For example:
```
>>> parse("{who.txt", "hello")
<Result () {'who.tx': 'hello'}>
```
Even though there is no closing `}`, `parse` assumes the final character is the closing brace and matches the pattern accordingly. In this case, I'd expect `parse` to return `None` since there is no direct match.
test_parse.py::TestBugs::test_unmatched_brace_doesnt_match
test_parse.py::TestPattern::test_beaker test_parse.py::TestPattern::test_bird test_parse.py::TestPattern::test_braces test_parse.py::TestPattern::test_center test_parse.py::TestPattern::test_dict_style_fields test_parse.py::TestPattern::test_dot_separated_fields test_parse.py::TestPattern::test_dot_separated_fields_name_collisions test_parse.py::TestPattern::test_fixed test_parse.py::TestPattern::test_format_variety test_parse.py::TestPattern::test_invalid_groupnames_are_handled_gracefully test_parse.py::TestPattern::test_left_fill test_parse.py::TestPattern::test_named test_parse.py::TestPattern::test_named_typed test_parse.py::TestResult::test_contains test_parse.py::TestResult::test_fixed_access test_parse.py::TestResult::test_named_access test_parse.py::TestParse::test_center test_parse.py::TestParse::test_custom_type test_parse.py::TestParse::test_datetime_group_count test_parse.py::TestParse::test_datetimes test_parse.py::TestParse::test_fixed test_parse.py::TestParse::test_hex_looks_like_binary_issue65 test_parse.py::TestParse::test_hexadecimal test_parse.py::TestParse::test_left test_parse.py::TestParse::test_letters test_parse.py::TestParse::test_mixed test_parse.py::TestParse::test_mixed_type_variant test_parse.py::TestParse::test_mixed_types test_parse.py::TestParse::test_multiline test_parse.py::TestParse::test_named test_parse.py::TestParse::test_named_aligned_typed test_parse.py::TestParse::test_named_repeated test_parse.py::TestParse::test_named_repeated_fail_value test_parse.py::TestParse::test_named_repeated_type test_parse.py::TestParse::test_named_repeated_type_fail_value test_parse.py::TestParse::test_named_repeated_type_mismatch test_parse.py::TestParse::test_named_typed test_parse.py::TestParse::test_no_evaluate_result test_parse.py::TestParse::test_no_match test_parse.py::TestParse::test_nothing test_parse.py::TestParse::test_numbers test_parse.py::TestParse::test_pipe test_parse.py::TestParse::test_precision test_parse.py::TestParse::test_precision_fail test_parse.py::TestParse::test_question_mark test_parse.py::TestParse::test_regular_expression test_parse.py::TestParse::test_right test_parse.py::TestParse::test_spans test_parse.py::TestParse::test_too_many_fields test_parse.py::TestParse::test_two_datetimes test_parse.py::TestParse::test_typed test_parse.py::TestParse::test_typed_fail test_parse.py::TestParse::test_unicode test_parse.py::TestSearch::test_basic test_parse.py::TestSearch::test_multiline test_parse.py::TestSearch::test_no_evaluate_result test_parse.py::TestSearch::test_pos test_parse.py::TestFindall::test_findall test_parse.py::TestFindall::test_no_evaluate_result test_parse.py::TestBugs::test_dotted_type_conversion_pull_8 test_parse.py::TestBugs::test_named_date_issue7 test_parse.py::TestBugs::test_pm_handling_issue57 test_parse.py::TestBugs::test_pm_overflow_issue16 test_parse.py::TestBugs::test_user_type_with_group_count_issue60 test_parse.py::TestParseType::test_case_sensitivity test_parse.py::TestParseType::test_decimal_value test_parse.py::TestParseType::test_pattern_should_be_used test_parse.py::TestParseType::test_pattern_should_be_used2 test_parse.py::TestParseType::test_width_constraints test_parse.py::TestParseType::test_width_empty_input test_parse.py::TestParseType::test_width_multi_int test_parse.py::TestParseType::test_width_str test_parse.py::TestParseType::test_with_pattern test_parse.py::TestParseType::test_with_pattern_and_regex_group_count test_parse.py::TestParseType::test_with_pattern_and_regex_group_count_is_none test_parse.py::TestParseType::test_with_pattern_and_wrong_regex_group_count_raises_error