首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个雷杰普-替代工作?

为什么这个雷杰普-替代工作?
EN

Stack Overflow用户
提问于 2014-03-29 00:48:47
回答 1查看 115关注 0票数 3

根据的说法,带有替换组$1 $2的正则表达式\W+([.:,.!?;])(.)做我想做的事情--将空格和标点符号的运行减少到最后的标点符号,一个空格,然后取起原来的位置。就我而言,这是完美的。

然而,当我尝试这个(regexp-replace* #rx"\\W+([.:,.!?;])(.)" str "\\1 \\2")时,我只得到未修改的str

代码语言:javascript
复制
> (define str "ihmb e.  ?. ! hrg; ; ")
> (regexp-replace* #rx"\\W+([.:,.!?;])(.)" str "\\1 \\2")
- : String
"ihmb e.  ?. ! hrg; ;"

但我期待着ihmb e! hrg; "

这是类型化的球拍,我刚刚更新为球拍6.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 02:41:18

支持基本的和扩展的正则表达式。

要使用包含\W的扩展“Perl”语法,您需要使用pregexp#px (而不是regexp#rx):

代码语言:javascript
复制
(define str "ihmb e.  ?. ! hrg; ; ")
(regexp-replace* #px"\\W+([.:,.!?;])(.)" str "\\1 \\2")

参考文献中,请读到这一段:

下面完成pregexp的语法,它使用{和}有界的重复,并在范围内外使用\ for meta-字符。

该段上面的内容是基本的regexp#rx语法。下面是pregexp#px

虽然我不知道整个历史,但我认为基本级别是为了向后兼容和方便某些regexp的移植。

就我个人而言,我总是使用pregexp / #px,这样我就可以使用完整的语法了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22725581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档