为什么R中的正则表达式搜索查询由字符串表示? [关闭]

问题描述 投票:-1回答:1

是否有任何理由为什么正则表达式模式必须由R中的字符串(或更具体地说,字符串)表示?

这个问题不是为什么我必须逃避一个点以匹配带有正则表达式的文字点,而是为什么我必须将它展开两次,因为它在R中被写为字符串。

例如,如果我想将字符串“a.b”转换为“a,b”,我需要匹配一个文字点,即\。用正则表达式说法。但是,因为正则表达式模式在R中作为字符串输入,我需要再添加一个转义层,给我们“\\。”。是否有任何理由不能直接输入正则表达式模式,例如作为正则表达式(\。)?也许它很快就会成为我的第二天性;作为初学者,我发现这有点令人困惑。

r regex stringr
1个回答
1
投票

基本问题是正则表达式由R中的函数处理,它们不是语言的内置部分。构建它们需要改变读取R代码时解析字符的方式。由于正则表达式不是语言的核心,因此这被视为不必要的复杂化。

更具体地说,对于处理regex(\.)的R解析器,你需要一个新的保留字(regex),以及一个全新的解析模式,它有自己的复杂性。例如,""")"都是合法的正则表达式。 (忽略引号,只考虑它们中的字符。)将它们放在你建议的语法中看起来像regex()regex()),所以R解析器必须向前看,当它击中第一个)以知道正则表达式结束的位置。但"))"也是合法的,那么它怎么知道在哪里停止?

将正则表达式放入字符串会增加额外的转义层,但至少它不会使解析器的设计复杂化。

热门问题
推荐问题
最新问题