Ваша не будет соответствовать строки как x$
должным образом.Если вы хотите сопоставить всю строку, попробуйте
"""^\$$|^[^\$].*$|^\$[^i\{].*$"""
, где мы сопоставляем любую из трех последовательностей, разделенных |
:
^\$$
^[^\$]+.*$
^\$[^i\{]+.*$
Давайте разберем это:
// First pattern--match lone '$' character
^ // Matches start of string
\$ // Matches the literal character '$'
$ // Matches end of string
// Second pattern--match a string starting with a character other than '$'
^ // Start of string
[^\$]+ // Match at least one non-'$':
+ // Match one or more
[^ ] // ...of characters NOT listed...
\$ // ...namely, a literal '$'
.* // Any number of other characters
$ // End of the string
// Third pattern--match a string starting with '$' but not '$i' or '${'
^ // Start of string
\$ // The literal character '$'
[^i\{]+ // Match at least one non-'i'/non-'{'
.* // Any number of other characters
$ // End of the string
Если вы не соответствуете всей строке, вам нужно беспокоиться о таких вещах, как foo$image{Hi}
.Если вы хотите сопоставить и пустую строку, добавьте ^$|
к совпадению.
Обратите внимание, что это написано специально для работы с регулярными выражениями, а не с вашим комбинатором синтаксического анализа.В зависимости от того, какие у вас есть другие правила, вы можете или не хотите совпадать со всей строкой.