regex - 提取某个单词后的数字

标签 regex r

我正在尝试构建一个正则表达式来提取某个字符串后的 6 位数字(正数或负数),即“LogL=”。

它来自某些软件的文本输出。

   7 LogL=-3695.47     S2=  9.0808       1891 df    2.263     0.2565    
   9 LogL= 2456.30     S2=  1.2789       1785 df    1.244     0.1354    

我在 R 中尝试了以下内容:
txt <- "   9 LogL= 2456.30     S2=  1.2789       1785 df    1.244     0.1354   "
as.numeric(unlist(strsplit(sub(".*LogL=*", "", txt), " "))[1])

不适用于正数。我想象它的处理方式非常粗鲁/丑陋。
我试图干预 regex101.com

尝试过与 Stackoverflow 相关的问题:(1) (2) (3)

我有点迷茫,似乎无法理解正则表达式。我相信这是小菜一碟。帮助?

最佳答案

我会使用 look-behind regex :

txt <- "   7 LogL=-3695.47     S2=  9.0808       1891 df    2.263     0.2565    
           9 LogL= 2456.30     S2=  1.2789       1785 df    1.244     0.1354   "
pattern <- "(?<=LogL\\=)\\s*\\-*[0-9.]+"
m <- gregexpr(pattern, txt, perl = TRUE)
as.numeric(unlist(regmatches(txt, m)))
#1] -3695.47  2456.30

关于regex - 提取某个单词后的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38120674/

相关文章:

java - 向 java 正则表达式提供输入

用于检查字符串的正则表达式是否为一定长度

regex - bash 扩展正则表达式 if 语句

根据R中的日期变量重新组织多个变量

java - 从字符串中获取用户名 = 'testuserMM' 的正则表达式

c++ - 正则表达式:查找所有子表达式(使用 boost::regex)

r - R 中数百万个小匹配 : need performance

html - 在 R 中清理 HTML 数据

r - 在 ggplot2 中绘制直方图会导致内存错误(只有 418 个数据点)

r - sparklyr中first,last,nth的使用