如何使用正则表达式替换精确的字符串?在DrRacket

时间:2013-10-20 03:04:17

标签: regex string racket

我最近一直在使用某些功能,而且我有一个适用于某些情况的功能,我需要一般功能。 我需要一个正则表达式,以便它找到我正在寻找的东西,而不仅仅是它的痕迹。 我有这个,例如

>(regexp-replace* #rx"^123456$" "123456 FUBAR" "MATCH!")
"123456 FUBAR"

正如您所看到的那样,它并没有将'123456'替换为''MATCH!

我试过用这个:

> (regexp-replace* #rx"(?:^| )123456(?:$| )" "123456XXXXX FUBAR" "MATCH!")
"123456XXXXX FUBAR"

这正是我不需要的。

我通过其他一些帖子潜伏,但我认为jScript和php中的正则表达式有点不同,因为它们使用“/”。

感谢您的建议!

编辑: 好。例如,使用以下#rx:^a(a 0 (a b))等字符串的效果不佳。

> (regexp-replace* "^(a)" "(a 0 (a b)) FUBAR" "MATCH!")
"(a 0 (a b)) FUBAR"

我主要需要它以这种方式工作。 :P

1 个答案:

答案 0 :(得分:3)

使用单词边界(\b,应该使用pregexp语法):

> (regexp-replace* #px"\\b123456\\b" "123456 FUBAR" "MATCH!")
"MATCH! FUBAR"
> (regexp-replace* #px"\\b123456\\b" "123456XXXXX FUBAR" "MATCH!")
"123456XXXXX FUBAR"
> (regexp-replace* #px"\\ba\\b" "(a 0 b) FUBAR" "MATCH!")
"(MATCH! 0 b) FUBAR"
> (regexp-replace* #px"a" "(a 0 (a b)) FUBAR" "MATCH!")
"(MATCH! 0 (MATCH! b)) FUBAR"

请参阅Regexp Syntax