Я пытаюсь использовать регулярное выражение в haskell. но я заметил что-то странное. Я пытаюсь поместить фильтр со строкой, которая может содержать одну из следующих: sun.java, org.testng, sun.reflect, java.lang и т. Д. мое регулярное выражение для этого (sun.java | org.testng | sun .reflect | java.lang), и он отлично работает с regex validator, но когда я делаю это в haskell: ниже приведен результат.Haskell - Regex Странное поведение
=>
Prelude Text.Regex.Posix> " org.testng.Hello.world" =~ "(sun.java|org.testng|sun.reflect|java.lang)" :: Bool
True
Prelude Text.Regex.Posix> " org.testng.Hello.world" =~ "(org.testng|sun.java|sun.reflect|java.lang)" :: Bool
False
=>
Prelude Text.Regex.Posix> " sun.java.Hello.world" =~ "(sun.java|org.testng|sun.reflect|java.lang)" :: Bool
False
Prelude Text.Regex.Posix> " sun.java.Hello.world" =~ "(org.testng|sun.java|sun.reflect|java.lang)" :: Bool
True
я делаю что-то здесь, так как только второго параметра из регулярного выражения детектируется остальное дает ложный результат.
EDIT
H:\>ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3
и
H:\>ghc-pkg list regex-posix
C:/Program Files/Haskell Platform/2014.2.0.0\lib\package.conf.d:
regex-posix-0.95.2
C:\Users\nixitp\AppData\Roaming\ghc\x86_64-mingw32-7.8.3\package.conf.d:
(no packages)
EDIT2 в первый раз работает это, я получил это предупреждение:
<interactive>: warning: isalpha from msvcrt is linked instead of __imp_isalpha
Не удалось воспроизвести; Я получаю 'True' для всех четырех запросов. Можете ли вы перечислить версии того, что вы используете? 'ghc --version' и' ghc-pkg list regex-posix' должны делать, хотя позаботьтесь, если вы находитесь в изолированной песочнице или аналогичной. –
Кроме того, вы включили «OverloadedStrings» (или любые другие расширения)? –
отредактировал мой вопрос, и я не уверен, что такое OverloadedStrings. Я новичок в Haskell, как я могу проверить –