R 最多再提取两个数字
这可能是一个非常简单的问题,但我对正则表达式没有太多经验。这是一个很好的正则表达式源代码,但无法理解如何将它们包含到我的以下代码中:R 最多再提取两个数字,r,regex,R,Regex,这可能是一个非常简单的问题,但我对正则表达式没有太多经验。这是一个很好的正则表达式源代码,但无法理解如何将它们包含到我的以下代码中: data %>% filter(grepl("^A01H1", icl)) 问题 我想提取我的数据框架的一列中的值,从这个A01H1开始,最多再提取两位数字,例如A01H100、A01H140、A01H110。尽管我做了几次尝试,但仍未能找到解决方案: 尝试 我看了一下,然后用^A01H1[0-9]。{2}选择了最多两个数字 我尝试添加任何字符^A01H1
data %>% filter(grepl("^A01H1", icl))
问题
我想提取我的数据
框架的一列中的值,从这个A01H1
开始,最多再提取两位数字,例如A01H100、A01H140、A01H110
。尽管我做了几次尝试,但仍未能找到解决方案:
尝试
我看了一下,然后用^A01H1[0-9]。{2}
选择了最多两个数字
我尝试添加任何字符^A01H1[0-9][0-9][x-y]
以在两位数后停止
任何帮助都将不胜感激:)您可以使用“^A01H1\\d{1,2}$”
。
第一部分(“^A01H1”
)是您自己弄明白的,那么我们在第二部分(“\\d{1,2}$”
)中做什么呢
包括所有数字,相当于\d
,因为我们在R中工作,您需要转义[0-9]
,因此我们使用\
\\d
表示我们希望有一个或两个匹配的{1,2}
\\d
指定字符串的结尾,因此后面不应出现任何内容,这将阻止匹配超过2个数字$
“^A01H1\\d{1,2}$”
。
第一部分(“^A01H1”
)是您自己弄明白的,那么我们在第二部分(“\\d{1,2}$”
)中做什么呢
包括所有数字,相当于\d
,因为我们在R中工作,您需要转义[0-9]
,因此我们使用\
\\d
表示我们希望有一个或两个匹配的{1,2}
\\d
指定字符串的结尾,因此后面不应出现任何内容,这将阻止匹配超过2个数字$
A01H1
开头,然后包含1或2个数字,后面不跟任何数字
你可以用
^A01H1\d{1,2}(?!\d)
看如果两位数字后根本没有文本,则将(?!\d)
替换为$
详细信息
-开始施压^
-文字字符串A01H1
-一到两位数字\d{1,2}
-右边不允许立即出现数字(?!\d)
-字符串结尾$
grepl("^A01H1\\d{1,2}(?!\\d)", icl, perl=TRUE)
或者,使用绳端锚
grepl("^A01H1\\d{1,2}$", icl)
请注意,
perl=TRUE
仅在使用PCRE特定语法(如(?!\d)
)时才是必需的,这是一种负前瞻。它看起来像是要匹配字符串的一部分,该部分以A01H1
开头,然后包含1或2个数字,后面没有任何数字
你可以用
^A01H1\d{1,2}(?!\d)
看如果两位数字后根本没有文本,则将(?!\d)
替换为$
详细信息
-开始施压^
-文字字符串A01H1
-一到两位数字\d{1,2}
-右边不允许立即出现数字(?!\d)
-字符串结尾$
grepl("^A01H1\\d{1,2}(?!\\d)", icl, perl=TRUE)
或者,使用绳端锚
grepl("^A01H1\\d{1,2}$", icl)
请注意,
perl=TRUE
仅在使用PCRE特定语法时才是必需的,例如(?!\d)
,一种负前瞻。^A01H1.*\d{2}
或^A01H1\d{1,2}
或^A01H1\d{1,2}(?!\d)
?您希望在A01H1
和两位数字之间有文本吗?您希望在两位数字之后有文本吗?“^A01H1\\d{1,2}$”
?请提供一个简短的示例,其中包含应匹配和不应匹配的值;)这个“^A01H1\\d{1,2}$”
工作得很好,你能进一步解释一下吗??不幸的是,这些^A01H1.*.\d{2}
或^A01H1\d{1,2}
或^A01H1\d{1,2}(?!\d)
不起作用。您是否正确尝试了它们grepl(“^A01H1\\d{1,2}(?)\\d)”,icl,perl=TRUE)
^A01H1.*\d{2}
或^A01H1\d{1,2}
或^A01H1\d{1,2}(?)
?您希望在A01H1
和两位数字之间有文本吗?您希望在两位数字之后有文本吗?“^A01H1\\d{1,2}$”
?请提供一个简短的示例,其中包含应匹配和不应匹配的值;)这个“^A01H1\\d{1,2}$”
工作得很好,你能进一步解释一下吗??不幸的是,这些^A01H1.*.\d{2}
或^A01H1\d{1,2}
或^A01H1\d{1,2}(?!\d)
不起作用。您是否正确尝试了它们grepl(^A01H1\\d{1,2}(?!\\d)”,icl,perl=TRUE)