diff --git a/CHANGELOG b/CHANGELOG
index 0ede280..0b48e9f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -14,6 +14,7 @@ Enhancements:
 Bug Fixes
 
 * Ignore dunder attributes when creating Tokens (issue672).
+* Allow operators to precede dollar-quoted strings (issue763).
 
 
 Release 0.4.4 (Apr 18, 2023)
diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py
index b45f3e0..d3794fd 100644
--- a/sqlparse/keywords.py
+++ b/sqlparse/keywords.py
@@ -30,7 +30,7 @@ SQL_REGEX = [
 
     (r"`(``|[^`])*`", tokens.Name),
     (r"´(´´|[^´])*´", tokens.Name),
-    (r'((?<!\S)\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal),
+    (r'((?<![\w\"\$])\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal),
 
     (r'\?', tokens.Name.Placeholder),
     (r'%(\(\w+\))?s', tokens.Name.Placeholder),

diff --git a/tests/test_parse.py b/tests/test_parse.py
index 5feef5a..6e4df7c 100644
--- a/tests/test_parse.py
+++ b/tests/test_parse.py
@@ -180,6 +180,14 @@ def test_psql_quotation_marks():
     $PROC_2$ LANGUAGE plpgsql;""")
     assert len(t) == 2
 
+    # operators are valid infront of dollar quoted strings
+    t = sqlparse.split("""UPDATE SET foo =$$bar;SELECT bar$$""")
+    assert len(t) == 1
+    
+    # identifiers must be separated by whitespace
+    t = sqlparse.split("""UPDATE SET foo TO$$bar;SELECT bar$$""")
+    assert len(t) == 2
+
 
 def test_double_precision_is_builtin():
     s = 'DOUBLE PRECISION'

Dollar quoted strings (PostgreSQL) cannot follow an operator (e.g. `=$$Hello$$`) 
**Describe the bug**
Dollar quoted strings (e.g. PostgreSQL) are not properly detected, when there is an operator directly preceding the dollar quoted string (e.g `var=$$text$$`). While according to PostgreSQL docs ...

> A dollar-quoted string that follows a keyword or identifier must be separated from it by whitespace; otherwise the dollar quoting delimiter would be taken as part of the preceding identifier.

... this does not hold true for operators. i.e. `SET application_name=$$Hello$$;` is valid.

This seems to relate to 
https://github.com/andialbrecht/sqlparse/blob/f101546dafa921edfea5b3107731504665b758ea/sqlparse/keywords.py#L33
and the negative lookbehind ensuring that there's no non-whitespace character before the starting `$`. This potentially should be changed to
```
(r'((?<![\w\"\$])\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal)
```
which would filter out any keywords or identifiers.


**To Reproduce**

```python
sqlparse.split('''update test set a=$$test;test$$;''');
```

```
['update test set a=$$test;', 'test$$;']
```

**Expected behavior**

```
['update test set a=$$test;test$$;']
```

**Versions (please complete the following information):**
 - Python: 3.12.1
 - sqlparse: 0.4.4

**Additional context**
Add any other context about the problem here.

tests/test_parse.py::test_psql_quotation_marks
tests/test_parse.py::test_parse_tokenize tests/test_parse.py::test_parse_multistatement tests/test_parse.py::test_parse_newlines[select\n*from tests/test_parse.py::test_parse_newlines[select\r\n*from tests/test_parse.py::test_parse_newlines[select\r*from tests/test_parse.py::test_parse_within tests/test_parse.py::test_parse_child_of tests/test_parse.py::test_parse_has_ancestor tests/test_parse.py::test_parse_float[.5] tests/test_parse.py::test_parse_float[.51] tests/test_parse.py::test_parse_float[1.5] tests/test_parse.py::test_parse_float[12.5] tests/test_parse.py::test_parse_placeholder[select tests/test_parse.py::test_parse_modulo_not_placeholder tests/test_parse.py::test_parse_access_symbol tests/test_parse.py::test_parse_square_brackets_notation_isnt_too_greedy tests/test_parse.py::test_parse_square_brackets_notation_isnt_too_greedy2 tests/test_parse.py::test_parse_keyword_like_identifier tests/test_parse.py::test_parse_function_parameter tests/test_parse.py::test_parse_function_param_single_literal tests/test_parse.py::test_parse_nested_function tests/test_parse.py::test_parse_div_operator tests/test_parse.py::test_quoted_identifier tests/test_parse.py::test_valid_identifier_names[foo] tests/test_parse.py::test_valid_identifier_names[_foo] tests/test_parse.py::test_valid_identifier_names[1_data] tests/test_parse.py::test_valid_identifier_names[\u696d\u8005\u540d\u7a31] tests/test_parse.py::test_double_precision_is_builtin tests/test_parse.py::test_placeholder[?] tests/test_parse.py::test_placeholder[:1] tests/test_parse.py::test_placeholder[:foo] tests/test_parse.py::test_placeholder[%s] tests/test_parse.py::test_placeholder[%(foo)s] tests/test_parse.py::test_scientific_numbers[6.67428E-8-expected0] tests/test_parse.py::test_scientific_numbers[1.988e33-expected1] tests/test_parse.py::test_scientific_numbers[1e-12-expected2] tests/test_parse.py::test_scientific_numbers[e1-None] tests/test_parse.py::test_single_quotes_are_strings tests/test_parse.py::test_double_quotes_are_identifiers tests/test_parse.py::test_single_quotes_with_linebreaks tests/test_parse.py::test_sqlite_identifiers tests/test_parse.py::test_simple_1d_array_index tests/test_parse.py::test_2d_array_index tests/test_parse.py::test_array_index_function_result tests/test_parse.py::test_schema_qualified_array_index tests/test_parse.py::test_aliased_array_index tests/test_parse.py::test_array_literal tests/test_parse.py::test_typed_array_definition tests/test_parse.py::test_single_line_comments[select tests/test_parse.py::test_names_and_special_names[foo] tests/test_parse.py::test_names_and_special_names[@foo] tests/test_parse.py::test_names_and_special_names[#foo] tests/test_parse.py::test_names_and_special_names[##foo] tests/test_parse.py::test_get_token_at_offset tests/test_parse.py::test_pprint tests/test_parse.py::test_wildcard_multiplication tests/test_parse.py::test_stmt_tokens_parents tests/test_parse.py::test_dbldollar_as_literal[$$foo$$-True] tests/test_parse.py::test_dbldollar_as_literal[$_$foo$_$-True] tests/test_parse.py::test_dbldollar_as_literal[$token$ tests/test_parse.py::test_dbldollar_as_literal[$_$ tests/test_parse.py::test_dbldollar_as_literal[$A$ tests/test_parse.py::test_non_ascii tests/test_parse.py::test_get_real_name tests/test_parse.py::test_from_subquery tests/test_parse.py::test_parenthesis tests/test_parse.py::test_configurable_keywords tests/test_parse.py::test_configurable_regex