gpt4 book ai didi

regex - R 中的正则表达式无效

转载 作者:行者123 更新时间:2023-12-05 00:58:52 25 4
gpt4 key购买 nike

我正在尝试在 R 中使用这个正则表达式:
\?(?=([^'\\]*(\\.|'([^'\\]*\\.)*[^'\\]*'))*[^']*$)
我是这样逃避的:
\\?(?=([^'\\\\]*(\\\\.|'([^'\\\\]*\\\\.)*[^'\\\\]*'))*[^']*$)
我得到一个 invalid regexp错误。

Regexpal 对正则表达式没有问题,我已经检查过 R 错误消息中解释的正则表达式与我在 Regex pal 中使用的完全相同,所以我有点不知所措。我不认为逃避是问题。

代码:

output <- sub("\\?(?=([^'\\\\]*(\\\\.|'([^'\\\\]*\\\\.)*[^'\\\\]*'))*[^']*$)", "!", "This is a test string?")

最佳答案

R默认使用POSIX(操作摄像机小号 ystem P ortable O I 覆盖整个院落)标准的正则表达式(请参阅这些SO帖[12]和?regex的[买者自负:砍刀级密度超前] )。

前瞻((?=...)),向后看((?<=...))和他们的否定((?!...)(?<!...))可能是最突出的例子PCRE特异性( P ERL-Ç ompatible [R egular Ë Xpressions的)与 POSIX 不兼容的表单。

通过将 R 选项激活为 perl ,可以训练 TRUE 来理解您的正则表达式;此选项可用于所有 base 正则表达式函数( gsubgreplregmatches 等):

output <- sub("\\?(?=([^'\\\\]*(\\\\.|'([^'\\\\]*\\\\.)*[^'\\\\]*'))*[^']*$)",
"!", "This is a test string?", perl = TRUE)

关于regex - R 中的正则表达式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31546146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com