正则表达式需求:提取每个括号内第二个连字符后的文本
正则提取解决方案
针对你的需求,这里给出适配的正则表达式以及使用示例:
正则模式
r'\([^-]+-[^-]+-([^)]+)\)'
模式解释
\(:匹配字符串中的左括号,确保只处理括号内的内容[^-]+:匹配第一个连字符-之前的任意非连字符内容(比如示例中的f)-:匹配第一个连字符[^-]+:匹配第二个连字符之前的任意非连字符内容(比如示例中的dqcn)-:匹配第二个连字符([^)]+):捕获分组,匹配从第二个连字符之后到右括号)之前的所有内容,这就是目标总线名称\):匹配右括号,限定捕获范围在单个括号内
使用示例
import re original_str = "(f-dqcn-bus1),(f-cdqc-bus2)" regex_pattern = r'\([^-]+-[^-]+-([^)]+)\)' # 提取所有匹配的总线名称 bus_names = re.findall(regex_pattern, original_str) # 拼接成逗号分隔的结果 result = ','.join(bus_names) print(result) # 输出: bus1,bus2
补充说明
- 该模式支持任意数量的括号(1个或多个),只要每个括号内结构符合
(xxx-xxx-总线名)格式即可 - 如果总线名称仅包含字母、数字或下划线,可将
[^)]+替换为\w+,模式变为r'\([^-]+-[^-]+-(\w+)\)',匹配更精准
内容的提问来源于stack exchange,提问作者Kathie
相关产品推荐
相关产品推荐

