繁体   English   中英

使用gregexpr获取字符串中的位置

[英]Using gregexpr to get position in a string

我想要做的是提取字符串(长度为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在读取元字符时遇到了问题。

提前致谢!

您可以尝试使用以下模式:

"\\\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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM