You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则如何实现长度超X的单词末尾N个字符加方括号包裹

正则替换实现方案

核心调整逻辑:原逻辑是捕获整个符合长度要求的单词整体套方括号,现在只要把正则拆成两个捕获组,分别匹配「单词前半段(不需要套括号的部分)」和「单词最后N位(需要套括号的部分)」,替换时保留前半段内容,仅给最后N位包裹方括号即可。

可直接运行的代码

你可以通过两个参数灵活控制规则:

  • min_word_len:触发替换的单词最小长度,对应需求里「长度超过X位」的阈值(当前场景是超过7位,即最小长度为8)
  • wrap_suffix_len:需要包裹方括号的尾部字符长度,对应需求里的N值(当前示例N=1)
import re

# 规则参数,可按需调整
min_word_len = 8
wrap_suffix_len = 1

# 正则结构说明:
# 1. 用\b锚定单词边界,避免误匹配单词内部片段
# 2. 第一个捕获组匹配单词前半段(总长度减去尾部要包裹的N位)
# 3. 第二个捕获组匹配单词尾部要包裹的N位,最后用\b锚定单词结束位置
pattern = rf"\b([A-ZÀ-ÖØ-Ýà-öø-ÿa-z]{{{min_word_len - wrap_suffix_len},}})([A-ZÀ-ÖØ-Ýà-öø-ÿa-z]{{{wrap_suffix_len}}})\b"

# 测试文本
text = "253.  Ficam revogadas a Lei nº 1.711, de 28 de outubro de 1952, e respectiva legislação complementar, bem como as demais disposições em contrário."
text = re.sub(pattern, r"\1[\2]", text)
print(text)

运行输出

运行后结果和预期逻辑完全匹配:

253.  Ficam revogada[s] a Lei nº 1.711, de 28 de outubro de 1952, e respectiv[a] legislaçã[o] complementa[r], bem como as demais disposiçõe[s] em contrári[o].

注意事项

  • 保留了原正则里的带重音拉丁字符匹配范围,葡语等带特殊变音符号的西语系词汇不会出现匹配异常
  • 如果后续要调整规则,比如给长度超过10位的单词最后3个字母加括号,只需要把参数改成min_word_len=11、wrap_suffix_len=3即可,不需要修改正则主体结构
  • 用单词边界\b做锚定后,不会把数字、标点旁边的字符误判为单词内容,匹配准确率比原正则更高

内容的提问来源于stack exchange,提问作者MyDisplay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:27:30