我在PowerShell中有这个脚本,我最终将使用它来翻译一个XML文件,其中包含一些日语单词并替换为英语。现在这是一个简单的正则表达式匹配示例:
$pattern = "(?<=\>)[\p{IsHiragana}\p{IsKatakana}\p{IsCJKUnifiedIdeographs}]+(?=\<\/)"
$text = 'tag3>日本語</tag>漢字</tag>.'
$matches = $text | Select-String -Pattern $pattern -AllMatches | ForEach-Object { $_.Matches.Value }
$matches
这工作正常,并将返回以下内容:
日本語
漢字
然而,我希望它也抓住或更多的英文字符之前或之后的日本字符,和整个事情之间的 Package >和</
对于此字符串:
tag3>Some text before 日本語 and some text after</tag><Before text 漢字</tag>
它应该抓住这些:
Some text before 日本語 and some text after
Before text 漢字
1条答案
按热度按时间r9f1avp51#
强制性一般性建议:
System.Xml.XmlDocument
类,PowerShell通过其[xml]
类型加速器和 * 基于属性 * 的XML DOM适配提供了轻松访问;例如参见this answer。您可以按如下方式优化regex:
输出:
有关正则表达式的解释和使用它的能力,请参见this regex101.com page。