繁体   English   中英

Haskell regex-pcre取反表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM