有
(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。
提前致谢,
仍在学习的史蒂夫
有
(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。
提前致谢,
仍在学习的史蒂夫
这个问题很老,而且不是特别清楚:你没有解释你是如何尝试使用正则表达式的。无论如何,我会尝试回答。
首先,在 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 来解决这个问题。