gpt4 book ai didi

regex - 将正则表达式与文字字符串结合

转载 作者:行者123 更新时间:2023-12-04 22:59:07 25 4
gpt4 key购买 nike

我有以下代码:

input <- "1-FA-1-I2-1-I2-1-I2-1-EX-1-I2-1-I3-1-FA-1-I1-1-I2-1-TR-1-I1-1-I2-1-FA-1-I3-1-I1-1-FA-1-FA-1-NR-1-I3-1-I2-1-TR-1-I1-1-I2-1-I1-1-I2-1-FA-1-I2-1-I1-1-I3-1-FA-1-QU-1-I1-1-I2-1-I2-1-I2-1-NR-1-I2-1-I2-1-NR-1-I1-1-I2-1-I1-1-NR-1-I3-1-QU-1-I2-1-I3-1-QU-1-NR-1-I2-1-I1-1-NR-1-QU-1-QU-1-I2-1-I1-1-EX"

innovation_patterns <- gsub(input, pattern = "-1-", replacement = "-")
innovation_patterns <- lapply(innovation_patterns, str_extract_all, '(?:I\\d-?)*I3(?:-?I\\d)*')

这输出:
"I2-I3"    "I3-I1"    "I3-I2"    "I2-I1-I3" "I3"       "I2-I3" 

但是,我只想提取与紧跟在特定字符串后面的正则表达式的匹配项,例如:

仅当正则表达式前面是文字字符串时才匹配 FA-I2-I2-I2-EX .

例如,这将是正则表达式的第一个匹配项,而第二个匹配项前面是 FA-I1-I2-TR-I1-I2-FA .

预期的输出与上面的正则表达式大致相同,但只选择 5 个匹配项中的一个,因为它前面需要一个特定的文字字符串。

如何修改此正则表达式以实现此目的?我假设它需要使用正向后视来首先识别文字字符串,然后执行正则表达式。

最佳答案

我不知道我是否完全理解您的意思,但您似乎可以使用 positive lookbehind .

例如:

(?<=a)b (positive lookbehind) matches the b (and only the b) in cab, but does not match bed or debt

关于regex - 将正则表达式与文字字符串结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com