Я пытаюсь найти знак доллара в начале выражения.Я ожидал бы, что это будет "^\\$"
, так как я должен избегать знака доллара, чтобы его не рассматривали как конец строки.Однако я вижу следующие результаты:
import Text.Regex.PCRE
let x = "$100.00" :: Text
let m = show x =~ "$" :: Bool
print m
let m = show x =~ "^$" :: Bool
print m
let m = show x =~ "^\\$" :: Bool
print m
Выход:
True
False
False
Чего мне не хватает?
Обновление 1
ЕслиЯ пытаюсь перейти на меньшее или большее количество символов "\":
let m = show x =~ "^\$" :: Bool
print m
let m = show x =~ "^\\\$" :: Bool
print m
Оба производят
Parse error (line 13, column 30): lexical error in string/character literal at character '$'
Обновление 2
let y = "1$00.00" :: Text
let m = show y =~ "$" :: Bool
print m
True
Именно поэтому я хочу ^\\$
вместо $
Обновление 3
Когда я не использую show
let m = x =~ "^\\$" :: Bool
print m
Производит
<interactive>:1:9: error:
• No instance for (RegexLike Regex Text) arising from a use of ‘=~’
• In the expression: x =~ "^\\$" :: Bool
In an equation for ‘m’: m = x =~ "^\\$" :: Bool