Я хочу соответствовать $ или $$ в строке, но не в том случае, если перед ними стоит <
$
$$
<
, это кажется близким, но соответствует одному $ в <$$ case
<$$
(?<!\<)\$\$|(?<!\<)\$
so ...
$BS<$BI> - соответствует BS
$BS<$BI>
$$BS<$$BI> - соответствует BS
$$BS<$$BI>
Вы можете использовать это регулярное выражение с 2 отрицательными взглядами за утверждениями:
(?<!<)(?<!<\$)\$\$?
Демонстрация RegEx
Подробности RegEx:
(?<!<)
(?<!<\$)
<$
\$\$?
Другой вариант - использовать совпадение для того, чего вы не хотите, и чередование с группой захвата, чтобы оставить то, что вы хотите:
<\${1,2}|(\${1,2})
Regex demo
Если квантификатор в видимости поддерживается, вы можете использовать:
(?<!<\$?)\${1,2}
Вы также можете потреблять то, что вы не хотите, а затем сопоставлять то, что вы хотите, поочередно.
/\<\$\$?(*SKIP)(*FAIL)|\$\$?/g