Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正在提取以下字符串中的第二个匹配项_Regex_R_Gsub - Fatal编程技术网

Regex 正在提取以下字符串中的第二个匹配项

Regex 正在提取以下字符串中的第二个匹配项,regex,r,gsub,Regex,R,Gsub,考虑以下具有预期输出的字符串 "NE-390-SM-04" --> "390-SM-04" "90055-SL-01-J" --> "90055-SL-01" "NE-1478-SL-02" --> "1478-SL-02" "87007-QM-01-J" --> "87007-QM-01" "NE-9315-BM-01-A"

考虑以下具有预期输出的字符串

"NE-390-SM-04"                 --> "390-SM-04"
"90055-SL-01-J"                --> "90055-SL-01"
"NE-1478-SL-02"                --> "1478-SL-02"
"87007-QM-01-J"                --> "87007-QM-01"
"NE-9315-BM-01-A"              --> "9315-BM-01"
"3121-SP-01"                   --> "3121-SP-01" 
"1639-YL-01"                   --> "1639-YL-01"
"NE-9922-WM-01-J"              --> "9922-WM-01"
"ND-2498-YL-01"                --> "2498-YL-01"
"C-4008-PP-03-J"               --> "4008-PP-03"
"876-C-4008-PP-03-J-234"       --> "4008-PP-03"
是否有一种方法可以提取
[0-9]+-[a-zA-Z]+-[0-9]+
在R中

我能够使用正则表达式引用这些部分:
([0-9]+-[a-zA-Z]+-[0-9]+)
我对匹配上述模式的最核心部分感兴趣


希望我已经说清楚了。如果你需要任何澄清,请告诉我。

你可以在开始时使用一个懒惰的点匹配模式和一个贪婪的点匹配模式,并且在替换模式中使用一个带有反向引用的捕获组,并且确保中间的字母数至少为2,用限定量词<代码> { 2,}。:

x <- c("NE-390-SM-04", "90055-SL-01-J", "NE-1478-SL-02", "87007-QM-01-J", "NE-9315-BM-01-A", "3121-SP-01", "1639-YL-01", "NE-9922-WM-01-J", "ND-2498-YL-01", "C-4008-PP-03-J", "876-C-4008-PP-03-J-234")
sub("^.*?([0-9]+-[a-zA-Z]{2,}-[0-9]+).*", "\\1", x)

x Try
sub(^.*?\\b([0-9]+-[a-zA-Z]+-[0-9]+).*,“\\1”,s)
非常感谢您的详细解释。我很感激。