我想要做的是在字符串中提取某个表达式的位置(长度为22588)。我通过以下方式尝试了它:
这是我正在寻找的模式:
\n,null,[null,null,12.27,800.54]\n,
\n,null,[null,null,12.58,670.84]\n,
\n,null,[null,null,13.45,750.25]\n,
等等。
我试着举个例子:
test = "some other stuff \n,null,[null,null,12.27,800.54]\n, other stuff a lot of characters \n,null,[null,null,12.58,670.84]\n, and again \n,null,[null,null,13.45,750.25]\n,"
现在我想得到表达式的位置。有这种模式:
\n,null,[null,null,"decimal numbers""comma between decimal numbers""decimal numbers"]\n,
这就是我的尝试:
mypattern = "\\\\n,null,\\[\null,null,[:alnum:]\\]\\\\\n,"
gg = gregexpr(mypattern,datalines)
不幸的是,这不起作用。在中间我总是有这些坐标。所以我需要一个通配符,我也认为R有一个问题就是阅读元字符。
提前致谢!
答案 0 :(得分:2)
您可以尝试使用此模式:
"\\\n,null,\\[null,null,\\d+\\.\\d+\\,\\d+\\.\\d+\\]\\\n"
或此模式,如果每个"之前和之后的数字位数。"保持不变:
"\\\n,null,\\[null,null,\\d{2}\\.\\d{2}\\,\\d{3}\\.\\d{2}\\]\\\n"
使用您的示例:
gregexpr("\\\n,null,\\[null,null,\\d+\\.\\d+\\,\\d+\\.\\d+\\]\\\n",test)
gregexpr("\\\n,null,\\[null,null,\\d{2}\\.\\d{2}\\,\\d{3}\\.\\d{2}\\]\\\n",test)
#[[1]]
#[1] 18 84 129
#attr(,"match.length")
#[1] 32 32 32
#attr(,"useBytes")
#[1] TRUE