0

(use extras format posix posix-extras regex regex-literals utils srfi-1)

具有逻辑分组 1 和 2 的正则表达式

/^(\\W+)\\s+(\\W+)/

但是在实际使用 -use- 1 和 2 的语法上遇到了问题。我应该使用 $1 $2 ,还是 \1 和 \2 ,还是其他什么?我将在与正则表达式本身相同的 LOC 上使用 1 和 2。

提前致谢,

仍在学习的史蒂夫

4

1 回答 1

0

这个问题很老,而且不是特别清楚:你没有解释你是如何尝试使用正则表达式的。无论如何,我会尝试回答。

首先,在 Perl 或 Ruby中没有“特殊”变量$1或类似的变量。$2有了这些,如何使用各种程序就变得很简单了。

例如,使用string-match,您只需收到一个匹配列表:

#;1> (use regex regex-literals)
#;2> (string-match  #/b(a)(r)/ "bar")
("bar" "a" "r")

因此,要引用您将使用的第 N 个子(list-ref the-match N)匹配(其中 0 等于完整匹配的字符串)。

string-substitute正则表达式中使用反向引用时,您将使用"\\1"(您必须使用两个反斜杠来转义字符串上下文中的反斜杠):

#;1> (use regex regex-literal)
#;2> (string-substitute #/f(o)(\1)/ "lala\\2xyz" "foo")
"lalaoxyz"

这通常有效,但是有一个未记录的功能(或者可能是错误),如果您在替换中的转义序列前使用反斜杠,它将被转义。请参阅此错误报告,了解它是如何工作的,以及如何使用 regex 而不是 regex egg 来解决这个问题。

于 2015-09-14T14:15:33.323 回答