如何满足条件时删除指定字符间的文本及限定符
特定场景下的文本匹配与删除实现
一、函数调用场景处理
针对choice()函数的参数处理规则:若左括号后第一个参数不以双引号开头,删除该参数(含后续逗号);若参数以双引号开头,则保留原内容。
实现代码
import re def process_function_calls(text): # 匹配choice(后不以双引号开头的首个参数(含逗号),替换为括号后跟空格 return re.sub(r'choice\((?!"[^"]*")\s*[^,]+,\s*', r'choice( ', text)
测试示例
- 输入:
choice(IN1T, endless )→ 输出:choice( endless ) - 输入:
choice("ENDMAN", endless )→ 输出:choice("ENDMAN", endless )
二、花括号场景处理
针对{}包裹的内容:若整个包裹块(含{})的字符数≤14,则删除整个块;否则保留。
实现代码
def process_braces(text): def filter_brace_content(match): matched_block = match.group(0) # 判断块长度,符合条件则删除 return '' if len(matched_block) <= 14 else matched_block # 匹配所有{}包裹的内容,通过回调函数判断是否删除 return re.sub(r'\{[^{}]*\}', filter_brace_content, text)
测试示例
- 输入:
{sometext here}→ 该块长度为13,符合删除条件,输出空字符串(若原文本仅含此块);若原文本为Hello {sometext here} World,输出Hello World
组合处理
若需要同时处理两种场景,可将两个函数结合:
def process_text(text): text = process_function_calls(text) text = process_braces(text) return text
内容的提问来源于stack exchange,提问作者Genius500
相关产品推荐
相关产品推荐

