如何构建正则表达式将heat1、heat2名称分别匹配至分组1、分组2?
解决heat1/heat2对应名称分捕获组的正则方案
嘿,我懂你现在的麻烦——想把heat1对应的名称精准放进分组1,heat2的放进分组2,但目前的正则把两个名字归到同一个分组里了。咱们来一步步解决这个问题!
情况1:heat1和heat2在同一段文本中
如果你的输入文本是类似 heat1: ALEX, some random text, heat2: RYAN 这种结构,用下面的正则就能分别捕获两个名称:
heat1: (\w+).*?heat2: (\w+)
heat1: (\w+):匹配heat1标签,同时把后面的名称(这里用\w+匹配字母数字下划线,根据你的实际需求可以换成[^,]+这类更精准的规则)捕获到分组1.*?:非贪婪匹配任意字符,避免跳过heat2标签直接匹配到文本末尾heat2: (\w+):匹配heat2标签,把对应的名称捕获到分组2
情况2:heat1和heat2各占一行
如果你的文本是每行一个标签的格式,比如:
heat1: ALEX
heat2: RYAN
可以启用多行模式(不同工具里对应m标志),用分支匹配的正则:
^heat1: (\w+)$|^heat2: (\w+)$
^heat1: (\w+)$:匹配以heat1开头的整行,捕获名称到分组1|:分支符,匹配任意一边的规则^heat2: (\w+)$:匹配以heat2开头的整行,捕获名称到分组2
为什么之前的方案会混分组?
大概率你之前用了类似 heat(1|2): (\w+) 的正则——这个写法里,不管是heat1还是heat2,名称都会被统一捕获到分组2,而分组1存的是1或2。咱们分开写各自的捕获组,就能让两个名称分别进对应的分组啦!
内容的提问来源于stack exchange,提问作者throw12345
相关产品推荐
相关产品推荐

