Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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
Regex 查找以获取R正则表达式中的文本_Regex_R_Lookbehind - Fatal编程技术网

Regex 查找以获取R正则表达式中的文本

Regex 查找以获取R正则表达式中的文本,regex,r,lookbehind,Regex,R,Lookbehind,我有这样的数据: Good afternoon. Hello. My bro's name is John... and he said softly 0.8% : "Don't you think I am handsome??" HAHA. jiji. koko. 我想使用R中的Look Behind regex获取引用之前的句子和引用中的文本 第一:我想在一堆文本中寻找引号 第二步:回顾并摘录引文前的一句话。如果没有句子,那就好了。仍然提取引文中的文本 以下是我想要实现的目标: My b

我有这样的数据:

Good afternoon. Hello. My bro's name is John... and he said softly 0.8% : "Don't you think I am handsome??" HAHA. jiji. koko.
我想使用R中的Look Behind regex获取引用之前的句子和引用中的文本

第一:我想在一堆文本中寻找引号

第二步:回顾并摘录引文前的一句话。如果没有句子,那就好了。仍然提取引文中的文本

以下是我想要实现的目标:

My bro's name is John... and he said softly 0.8%: "Don't you think I am handome??"
我尝试使用这个,但我想通过使用lookbehindregex寻求帮助。多谢各位

regmatches(x, gregexpr('[^\\.]+[\\.\\:]"([^"]*)"', x))
dput:

"Good afternoon. Hello. My bro's name is John... and he said softly 0.8% : \"Don't you think I am handsome?? \" HAHA. jiji. koko."

我们也可以使用
gsub
。我们匹配一个或多个非
字符,后跟
和一个或多个空格(
\\s+
),或一个或多个空格,后跟一个或多个直到字符串结尾都不是空格的字符(
$
),并替换为
'

或者,我们匹配一个或多个非
字符,后跟一个
,后跟一个或多个空格(
\\s+
),然后捕获字符串的其余部分,直到
后跟一个或多个字符(
*
)到字符串末尾,并替换为捕获组(
\\1


所以你还想去掉“\`”@Pascal我想在引号前提取一句话,以及引号内的文本。所以你的预期输出不正确?谢谢,有没有办法使用LookBehind?@user5566552稍作修改后更新谢谢,你能给我解释一下代码吗。谢谢。我只想提取1s在报价单前的结束语。如果我有:“再见。你好我兄弟的名字叫约翰。。。他轻轻地说:“你不觉得我很帅吗?”“哈哈。我不想得到“Hello”。但是使用这个,“Hello”被捕获。lookbehind正则表达式,我仍然得到Hello
gsub('[^.]+\\.\\s+|\\s+[^ ]+$', '', str1)
#[1] "My bro's name is John... and he said softly 0.8% : \"Don't you think I am handsome?? \""
gsub('^[^.]+\\.\\s+(.*(?:"[^"]+")).*$', '\\1', str1, perl=TRUE)
#[1] "My bro's name is John... and he said softly 0.8% : \"Don't you think I am handsome?? \""