如何使用正则表达式提取字符串第三个“-”后的第一个字符
解决方案
你需要的正则表达式为:
^(?:[^-]*-){3}(.)
正则说明
^锚定匹配起始位置,确保从字符串开头开始计数破折号(?:[^-]*-)为非捕获组,匹配一段不含破折号的字符+末尾1个破折号的结构{3}限定上述结构重复匹配3次,刚好跳过前3个破折号(.)捕获接下来的第一个字符,即为你需要的目标内容,结果存储在第1个捕获组中
使用示例(Python)
import re test_strs = [ "mytext-othertext-01-Onemore", "mytext1-othertext1-02-Twomore", "mytext2-othertext2-03-Fourmore" ] reg = re.compile(r'^(?:[^-]*-){3}(.)') for item in test_strs: match = reg.search(item) if match: print(match.group(1))
运行输出:
O T F
原有正则问题说明
你之前编写的\-(.*)仅匹配字符串中第一个出现的破折号,且会捕获该破折号之后的所有内容,没有限定跳过前3个破折号的逻辑,因此不符合需求。
内容的提问来源于stack exchange,提问作者VERYNET
相关产品推荐
相关产品推荐

