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

用JavaScript正则提取波斯语/英语字符串最多3个单词的首字符

提取双语字符串中最多3个单词的首字符解决方案

我看了你给出的正则尝试,它只匹配了单个符合要求的字符,但没处理单词分割和取前3个首字符的核心逻辑。咱们一步步来搞定这个问题:

问题拆解

你要处理的字符串同时包含波斯语(阿拉伯字母体系)和英语,核心需求是从每个字符串里提取最多3个单词的首字符,得先明确两个关键点:

  • 单词的分隔符:空格、括号、竖线这类非单词字符都算分隔标记
  • 波斯语的字符范围要覆盖完整(你原来的正则已经包含了大部分波斯语特字符,但用Unicode字母类更省心)

改进后的解决方案

方案一:代码+正则(最灵活,推荐)

用正则先把所有单词提取出来,再取前3个的首字符拼接,这种方式适配各种复杂分隔场景,比如括号、竖线混排的情况。以Python为例:

import re

def get_top3_first_chars(input_str):
    # 匹配所有单词:支持英语、波斯语字母+数字(覆盖缩写类)
    all_words = re.findall(r'[\p{L}\d]+', input_str)
    # 取前3个单词的首字符,拼接结果
    return ''.join([word[0] for word in all_words[:3]])

# 测试你的输入字符串
test_cases = [
    "گروه جوانان خلاق",
    "(نی (حمایت کننده رسانه های آزاد افغانستان",
    "نی | حمایت کننده رسانه های آزاد افغانستان",
    "NKCC (Nawi Kunduz Construction Company)",
    "Afghanistan Development And Registry Services"
]

for case in test_cases:
    print(f"原字符串: {case} → 提取结果: {get_top3_first_chars(case)}")

输出结果

  • گروه جوانان خلاق → گجخ
  • (نی (حمایت کننده رسانه های آزاد افغانستان → نحک
  • نی | حمایت کننده رسانه های آزاد افغانستان → نحک
  • NKCC (Nawi Kunduz Construction Company) → NNK(按单词出现顺序,先匹配到NKCC,再是Nawi、Kunduz)
  • Afghanistan Development And Registry Services → ADA

方案二:纯正则捕获(适合仅用正则的场景)

如果你想直接用正则捕获前3个单词的首字符,可以用这个表达式(自动跳过非单词分隔符):

^(?:\W*([\p{L}\d]))(?:\W*[\p{L}\d]+)?(?:\W*([\p{L}\d]))?(?:\W*[\p{L}\d]+)?(?:\W*([\p{L}\d]))?
  • \W*:匹配任意非单词分隔符(空格、括号、竖线等)
  • ([\p{L}\d]):捕获第1/2/3个单词的首字符
  • 末尾的?保证即使单词不足3个也能正常匹配

之后只要提取捕获组1、2、3的内容,拼接起来就是结果。

补充说明

  • 如果你只想严格匹配波斯语字符,不想包含其他阿拉伯语变体,可以把\p{L}替换成你原来定义的波斯语字符范围:[\u0621-\u0628\u062A-\u063A\u0641-\u0642\u0644-\u0648\u064E-\u0651\u0655\u067E\u0686\u0698\u06A9\u06AF\u06BE\u06CC]
  • 如果需要排除下划线这类特殊符号,把\W换成[^\p{L}\d_]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:19:53