2

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

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

如您所见,它并没有用 ''MATCH! 替换 '123456'!

我尝试使用这个:

> (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

4

1 回答 1

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"

请参阅正则表达式语法

于 2013-10-20T03:19:45.837 回答