[英]Haskell regex-pcre negate expression
我如何实现逆向匹配,例如
getAllTextMatches $ "foobar bar bl a" =~ pattern :: [String]
将产生不是多个空格的字符串列表。
我试过了
getAllTextMatches $ "foobar bar bl a" =~ "(\\s\\s+)" :: [String]
这将按预期返回此列表: [" "," "," "]
现在,我尝试通过以下方式否定表达式
getAllTextMatches $ "foobar bar bl a" =~ "(?!\\s\\s+)" :: [String]
返回了[""]
而我想收到以下信息:
["foobar", "bar", "bl", "a"]
或作为另一个例子
getAllTextMatches $ "foobar /* bla */ bar bl a" =~ "/\\*[^*]*\\*/" :: [String]
返回["/* bla */"]
我想通过否定"/\\\\*[^*]*\\\\*/"
来接收: ["foobar "," bar bl a"]
您正在寻找的是分裂:
用原始模式分割字符串,您将获得所需的内容。
要么
您可以尝试匹配:
(?>\\s\\s+\\K|^)(?>\\S|\\s(?!\\s+))++
和
(?>/\\*[^*]*\\*/\\K|^)(?>[^/]++|/(?!\\*[^*]*\\*/))++
其中\\K
是重置比赛开始的pcre功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.