Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何提取后跟任意数字的特定字符串?_R - Fatal编程技术网

R 如何提取后跟任意数字的特定字符串?

R 如何提取后跟任意数字的特定字符串?,r,R,我有个小问题。 我有以下格式的文本: A.1 Goals Section 1: Blah Blah Blah Random sentence A. Random sentence. Section 2: Blah Blah Blah Random sentence A. Random sentence. A.2 description 我希望获得以下输出: A.1 Goals Section 1: Blah Blah Blah Section 2: Blah Blah Blah A.

我有个小问题。 我有以下格式的文本:

A.1 Goals

Section 1: Blah Blah Blah
Random sentence A. Random sentence.
Section 2: Blah Blah Blah
Random sentence A.
Random sentence.

A.2 description
我希望获得以下输出:

A.1 Goals

Section 1: Blah Blah Blah

Section 2: Blah Blah Blah

A.2 description

因此,基本上如何获得任何重复多次并后跟任何可能数字的字符串(相同字符串和不同数字的任何模式)

我们可以使用
grep
在阅读
readLines
后使用
。在这里,我们两个都匹配
字母(“A”后跟一个
,后跟一个或多个数字-
\\d+
)或(
|
),如果文本以“节”(
^Section
)开头,后跟一些字符(
*
),并且空格(
(\\w+\\s*)后面有重复的单词\\1
-
\\1
是捕获组的反向参考)


out您可以试试这个,但是我不确定确切的输出:

string <- c("Section 1: Blah Blah Blah","Random sentence A. Random sentence.",
"Section 2: Blah Blah Blah","Random sentence A.",
"Random sentence.")

 grep("(\\w+)\\s+\\1\\s+\\1",string, value=TRUE)

在OP请求后添加

[1] "Section 1: Blah Blah Blah" "Section 2: Blah Blah Blah"
使用
grep
中的
invert=TRUE
,您可以更改匹配

 grep("(\\w+)\\s+\\1\\s+\\1",string, value=TRUE,invert = TRUE)
因此,上述正则表达式将导致:

#[1] "Random sentence A. Random sentence."
#[2] "Random sentence A."                 
#[3] "Random sentence." 

我的错,我不小心做了那件事。应该是A.2描述有没有办法让它成为字符串?这确实涉及A.和部分,但是否可以进一步概括?@J.Doe如果部分以任何字母开头,您可以使用
(^[A-Z]\\\.\\d+)
,我假设您有
部分
作为感谢帮助的起点。你知道我是如何得到“第1节:废话废话”之后的第一句话的吗?所以“随机句子A.”@J.Doe我想另一个解决方案会随着你的请求而更新谢谢你的帮助。你知道我如何得到“第1节:废话废话”和“第2节:废话废话废话”之后的第一句话,一般来说,基本上都是“随机句子A”
 grep("(\\w+)\\s+\\1\\s+\\1",string, value=TRUE,invert = TRUE)
#[1] "Random sentence A. Random sentence."
#[2] "Random sentence A."                 
#[3] "Random sentence."