我有一个表达 - ] 006IRBTS1 [g600 niT erauqS ehcoirB g004 g001 / p 57.01 $ hcnuB / p 51.2 $
我想用粗体提取部分。逻辑是:
我在R中使用以下正则表达式。当然不起作用。有什么想法吗?
"^].+\\[.{10}[A-Za-z\\s]+[0-9\\.]+\\s"
答案 0 :(得分:2)
1)以“]”开头。
\]
2)拿走所有内容,直到你得到“[”包括“[”。
[^\[]+\[
3)包括接下来的10个字符/数字。
.{,10}
4)在这10个字符/数字之后,包括所有字母和空格,直到你点到一个数字。
[a-zA-Z\s]+\d
5)捕获数字和随后的所有内容,直到你碰到一个空格。
[^\s]+
组合:
\][^\[]+\[.{,10}[a-zA-Z\s]+\d[^\s]+
Regex101:https://regex101.com/r/TpoV52/1
<强>更新强>
我将最后一个量词从+更改为*,因此它可以匹配某些或 none 更多字符。
这是因为给定“捕获数字和随后的所有内容,直到你遇到空白”,有可能在该数字之后立即出现一个空格。您在评论中提供的第二个主题字符串就是这种情况:
]006IRBTS1[ g600 niT erauqS ehcoirB g4 g001 /p 57.01$ hcnuB /p 51.2$
下面的更新模式将停留在“捕获该数字”(g 4 ),因为“并且直到你击中空白之后的所有内容”实际上都没有。 (空格是数字之后的下一个字符。)
\][^\[]+\[.{,10}[a-zA-Z\s]+\d[^\s]*
Regex101:https://regex101.com/r/TpoV52/2