Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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/0/search/2.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_List_Gsub - Fatal编程技术网

Regex 用于匹配R中各种类型的编号列表的正则表达式

Regex 用于匹配R中各种类型的编号列表的正则表达式,regex,r,list,gsub,Regex,R,List,Gsub,我有一组文件,其中包含(可能)不同种类的有序列表。我想将所有列表实例折叠成段落文本,并去掉#。即 1. Hello (a) world ii) 3000 This isn't in the list. 将成为: Hello world 3000. This isn't in the list. 我还可以想象将这些列表提取到一个单独的R对象中会很有用的情况(例如,我们可能想要获取一个文本,创建一个存储每个列表项的列表列表)。(即,假设并发列表项位于同一列表中,则先前的项目将成为列表中的3个项目

我有一组文件,其中包含(可能)不同种类的有序列表。我想将所有列表实例折叠成段落文本,并去掉#。即

1. Hello
(a) world
ii) 3000
This isn't in the list.
将成为:

Hello world 3000.
This isn't in the list.
我还可以想象将这些列表提取到一个单独的R对象中会很有用的情况(例如,我们可能想要获取一个文本,创建一个存储每个列表项的列表列表)。(即,假设并发列表项位于同一列表中,则先前的项目将成为列表中的3个项目)

Python
中有一些这样做的指导,但是我想知道如何在
R
中操作这样的列表


到目前为止,我的尝试相当粗糙,例如,基于无序的列表大小写
gsub(“(\r?\n\r)\\\*”,“”,stri1)
如果将文件作为一个字符串读取,可以使用

txt = "1. Hello\r\n(a) world\r\nii) 3000\r\nThis isn't in the list."
txt = gsub("(?m)[\r\n]*^(?:\\d+(?:\\.\\d+)*|\\(?[a-z]+\\))\\s+", " ", txt, perl=T)
lst = strsplit(txt, "\r?\n")
输出:

> txt
[1] "1. Hello world 3000\r\nThis isn't in the list."
> lst
[[1]]
[1] "1. Hello world 3000"     "This isn't in the list."
正则表达式是

(?m)[\r\n]*^(?:\d+(?:\.\d+)*|\(?[a-z]+\))\s+


(?m)
强制
^
匹配行起始位置,
[\r\n]*
匹配零个或多个
\n
\r
字符,
(?:\d+(?:\.\d+)***(?[a-z]+\)
匹配整数或用点分隔的数字,或一个或多个用点和可选
括起来的字母(
和必选的
\s+
匹配一个或多个空格符号。如果字母/罗马数字可以是大写,请将
(?m)
替换为
(?mi)

如果以一个字符串形式读取文件,则可以使用

txt = "1. Hello\r\n(a) world\r\nii) 3000\r\nThis isn't in the list."
txt = gsub("(?m)[\r\n]*^(?:\\d+(?:\\.\\d+)*|\\(?[a-z]+\\))\\s+", " ", txt, perl=T)
lst = strsplit(txt, "\r?\n")
输出:

> txt
[1] "1. Hello world 3000\r\nThis isn't in the list."
> lst
[[1]]
[1] "1. Hello world 3000"     "This isn't in the list."
正则表达式是

(?m)[\r\n]*^(?:\d+(?:\.\d+)*|\(?[a-z]+\))\s+


(?m)
强制
^
匹配行起始位置,
[\r\n]*
匹配零个或多个
\n
\r
字符,
(?:\d+(?:\.\d+)***(?[a-z]+\)
匹配整数或用点分隔的数字,或一个或多个用点和可选
括起来的字母(
和必选的
\s+
匹配一个或多个空格符号。如果字母/罗马数字可以是大写,请将
(?m)
替换为
(?mi)

尝试
gsub((?m)\n^[a-zA-Z0-9]+\\\\s+,“”,text,perl=T)
如果您将文本作为一个字符串来阅读。感谢@WiktorStribiżew,它适用于基于“x”的列表,我刚刚更新了链接Python页面上的示例,我还对其他类型的列表格式感兴趣,特别是(x)和(x)符号。因此我们有a/I/1/1.1编号,加上(),和。因此,这进一步了一点,但(x)仍然保留,在“1.1”风格上,第二位数字没有被删除。在“1.1.1”风格上,第二位数字没有被删除:
gsub((x)保留,在“1.1”风格上,第二位数字没有被删除:
gsub(“
gsub(\\s(\\r(?m)s(\\r(m)m)m)n?^[a-zA-zA-zA-zA-zA-zA-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-\.+[a-zA-Z0-9]|\\r(?m)\本次(a-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9]+\\\ n?^[a-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-[a-zA-Z0-9]+\\\\\\\n(?m)\r?^[a-zA-Z0-9]+\\\\\\\n(?m)\r?^[a-zA-Z0-9]+\\\\\\\\\n(?m)\\r?\\\\([a-zA-Z0-9]+\\)|\\r(?m)\\n?\\\([a-zA-Z0-9]+\\),“”,test,perl=T)
将它们读入列表也会很有趣(但这肯定超出了我现在的能力)尝试
gsub((?m)\\\[a-zA-Z0-9]+\\。\\s+,“”,text,perl=T)
如果您将文本作为一个字符串来阅读。谢谢@WiktorStribiżew,这对基于“x”的列表有效,我刚刚更新了链接Python页面上的示例,我还对其他类型的列表格式感兴趣,特别是(x)和(x)符号。我们有a/i/1/1.1编号,加上(),和。因此,这进一步了一点,但(x)仍然保留,在“1.1”风格上,第二位数字没有被删除。在“1.1.1”风格上,第二位数字没有被删除:
gsub((x)保留,在“1.1”风格上,第二位数字没有被删除:
gsub(“
gsub(\\s(\\r(?m)s(\\r(m)m)m)n?^[a-zA-zA-zA-zA-zA-zA-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-\.+[a-zA-Z0-9]|\\r(?m)\本次(a-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9]+\\\ n?^[a-zA-zA-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-Z0-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-[a-zA-Z0-9]+\\\\\\\n(?m)\r?^[a-zA-Z0-9]+\\\\\\\n(?m)\r?^[a-zA-Z0-9]+\\\\\\\\\n(?m)\\r?\\\\([a-zA-Z0-9]+\\)|\\r(?m)\\n?^\([a-zA-Z0-9]+\\)“,”,test,perl=T)
将它们读入列表也会很有趣(但这肯定超出了我现在的能力)谢谢,我想我预期的列表会导致:[[1][1]你好[2]世界[3]3000任何后续的字符列表都会创建新的列表
Gsub
创建一致的列表类型(例如,所有1.2.3等)可能是明智的,然后我忘记了
strsplit
,它可以读入[0-9]或其他一些句子,我认为我预期的列表会导致:[[1]][1]你好[2]世界[3]3000任何后续的字符列表都会创建新的列表
Gsub
创建一致的列表类型(例如所有1.2.3等)可能是明智的,然后我忘记了可以读入[0-9]或其他内容的
strsplit