正则表达式多分组匹配需求实现咨询
可以通过正则表达式配合字符串处理实现需求
你的需求可以分两步完成:先通过正则提取每个标签块的trigger和对应的文本内容,再将文本内容拆分为单个单词并关联对应的trigger,具体实现如下:
实现思路
- 用你已有的正则表达式
\[(?<trigger>.*?): (?<result>.*?)\]匹配所有[#xxx: yyy]格式的标签块,提取每个块的触发标记(如#hall)和对应的文本(如est équipé)。 - 将每个标签块的文本内容按空格拆分为单个单词,把每个单词和对应的触发标记关联起来。
示例代码(Python)
import re input_str = "[#hall: hall] de [#immeuble: immeuble] [#hall: est équipé] d'une installation liée aux logements qu'[#hall: il dessert]" # 匹配标签块的正则 pattern = r"\[(?<trigger>.*?): (?<result>.*?)\]" # 遍历所有匹配的标签块 for match in re.finditer(pattern, input_str): trigger = match.group("trigger") # 拆分文本为单个单词 for word in match.group("result").split(): print(f"{word} : {trigger}")
运行结果
hall : #hall immeuble : #immeuble est : #hall équipé : #hall il : #hall dessert : #hall
说明
- 这种方式兼顾了正则的匹配能力和字符串拆分的简洁性,比单纯用复杂正则更易维护。
- 如果文本中存在除空格外的单词分隔符(比如连字符、特殊符号),可以调整拆分逻辑(比如用正则
\w+匹配单词)来适配。
内容的提问来源于stack exchange,提问作者Furya
相关产品推荐
相关产品推荐

