You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用str_detect检测HJFC0230之后的HGSA0010(含中间字符)

解决方案

你的问题在于原正则里的正向预查(?=HGSA0010)要求HGSA0010必须紧跟在HJFC0230之后,中间不能有任何字符,所以无法匹配两者间存在其他内容的场景。

要检测HJFC0230之后是否出现HGSA0010,可以使用匹配任意中间字符的正则表达式:

library(stringr)
x <- "30098 HGQX0080 ; 30098 HJFC0230 ; 30098 HGMA0030 ; 30098 ZZQX0270 ; 30098 ZZQX1880 ; 30099 ZCQH0010 ; 30099 YYYY6000 ; 30106 ZCQH0010 ; 30106 YYYY6000 ; 30163 HGSA0010 ; 30163 ZZQX1880"
str_detect(x, "HJFC0230.*HGSA0010")

正则说明

  • HJFC0230:匹配目标起始字符串
  • .*:匹配任意数量的任意字符(默认不包含换行符)
  • HGSA0010:匹配目标结束字符串

如果你的字符串可能包含换行符,可以添加(?s)模式修饰符,让.匹配包括换行在内的所有字符:

str_detect(x, "(?s)HJFC0230.*HGSA0010")

运行上述代码,针对你的示例字符串会返回TRUE,因为HGSA0010确实出现在HJFC0230之后。

内容的提问来源于stack exchange,提问作者Alexandre Challine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:05:17