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

PowerShell字符串分词函数优化:连续大写字母拆分问题求助

优化PowerShell字符串单词提取的正则方案

针对连续大写字母后接小写字母无法正确拆分的问题,可通过调整正则表达式精准识别单词边界来解决。

优化后的函数实现

function Get-WordList {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, ValueFromPipeline)]
        [string]$InputString
    )

    # 匹配两种单词块:
    # 1. 连续大写字母(直到遇到"大写+小写"组合或字符串结尾)
    # 2. 单个大写字母开头,后续跟任意小写字母
    $wordPattern = '[A-Z]+(?=[A-Z][a-z]|$)|[A-Z][a-z]*'
    
    $words = [regex]::Matches($InputString, $wordPattern) | ForEach-Object { $_.Value }
    
    # 返回唯一单词列表
    $words | Select-Object -Unique
}

正则逻辑说明

  • [A-Z]+(?=[A-Z][a-z]|$):匹配连续大写字母,仅当这些大写字母后紧跟"大写+小写"组合或字符串结尾时生效。比如在"AADJTagged"中,该规则会匹配出"AADJ",因为J后是T(大写)+a(小写)的组合。
  • [A-Z][a-z]*:匹配单个大写字母开头、后续跟任意数量小写字母的单词块,比如"Tagged"就会被该规则匹配到。

测试示例

# 测试连续大写后接小写场景
Get-WordList -InputString "AADJTagged"
# 输出:
# AADJ
# Tagged

# 测试常规驼峰命名场景
Get-WordList -InputString "PowerShellFunctionExample"
# 输出:
# Power
# Shell
# Function
# Example

# 测试混合缩写场景
Get-WordList -InputString "HTTPRequestJSON"
# 输出:
# HTTP
# Request
# JSON

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:52:04