【问题标题】:Searching for a literal hyphen in powershell在PowerShell中搜索文字连字符
【发布时间】:2016-07-20 17:25:42
【问题描述】:

我正在使用 powershell 将多页 word 文档拆分为单页,然后删除我不需要的所有页面。问题是我正在复制文本并搜索模式,而连字符让我失望。这是相关的代码。如果我删除连字符并只搜索“订单号”,它可以工作,但它会返回两页,而不仅仅是我想要的带有“订单号 -”模式的页面。我尝试了很多配置,转义连字符`-、--% 等,但没有任何效果,我运行的包括连字符在内的所有内容都只输出 8 个 DeleteMe 页面,而不是 1 个 Docuemnt 和 7 个 DeleteMe

    $Pattern = "Order Number -"
    $rngPg.End = $word.Selection.Start
    $rngPg.Copy()
    #Get Name 
    $regex = [Regex]::Match($rngPg.Text, $Pattern) 
    if($regex.Success)
    {
    $id = "Document" + $i 
    }
    else
    {
    $id = "DeleteMe_" + $i 
    }

【问题讨论】:

    标签: powershell


    【解决方案1】:

    将您的模式更改为:

    $Pattern = 'Order Number [\u2010-\u2015-]'
    

    说明:

    Word 有一个 AutoFormat feature,它喜欢自动将连字符变成破折号 - 这里可能就是这种情况。

    英语 Office 将连字符转换为 unicode 字符,代码点值为 0x2013,但可能因区域设置和安装的语言包而异,因此字符集从 0x20100x2015 + -

    【讨论】:

    • 效果很好。非常感谢你的帮助。我会在这个上迷路很长时间。
    • @Nolemonkey 很高兴为您提供帮助 :-) 如果我的回答解决了您的问题,请点击左侧的复选标记“接受”它
    猜你喜欢
    • 2013-06-25
    • 2018-02-14
    • 2015-01-25
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2014-11-18
    • 2016-09-17
    相关资源
    最近更新 更多