正则表达式匹配所有可能性

标签 r regex

我想创建一个正则表达式,它只匹配以“line_start”开头的行,然后匹配所有数字。

我目前有:

"^line_start.*?(\\d)"

使用文本 "line_start 1 abc 2 def 4" 当我执行 str_match_all("line_start 1 abc 2 def 4", "^line_start.*?(\\d)"),因为我使用问号使其不贪心。 如果我删除问号:

"^line_start.*(\\d)"

正则表达式调用 str_match_all("line_start 1 abc 2 def 4", "^line_start.*(\\d)") 将返回数字 4。

我如何定义正则表达式使其返回所有数字(例如 1、2 和 4)?请记住,该行必须以 line_start 开头。

最佳答案

你可以使用

regmatches(x, gregexpr("(?:\\G(?!^)|^line_start)\\D*\\K\\d+", x, perl=TRUE))

参见 regexR demo online .

它是一个基本的 R 解决方案,具有匹配的 PCRE 正则表达式:

  • (?:\\G(?!^)|^line_start) - 上一个成功匹配的结尾或字符串开头的 line_start
  • \\D* - 尽可能多的任何非数字字符
  • \\K - 匹配重置运算符丢弃目前匹配的所有文本
  • \\d+ - 1+ 位数字。

关于正则表达式匹配所有可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127479/

相关文章:

r - 如何让 Shiny App 在部署到网络上时使用环境变量?

c# - 在以以下开头的同一行中查找多个正则表达式模式

javascript - 捕获后面没有符号的单词

regex - 如何通过awk中的转义双引号替换双引号?

sql - Oracle REGEXP_INSTR() 和 "a-z"字符范围与预期不匹配

r - 使用 R 将句子转为单词表

r - 分离分数向量,保留分数

r - 来自前 k 个值的第 n 个最小值

regex - 正则表达式匹配带小数分隔符和可选千位分隔符的数字

r - 如何连接字符串和从 R 中的函数计算的输出?