【发布时间】:2019-08-09 20:35:49
【问题描述】:
我试图在一个看起来像' - '的非保证字符串之后获取单词之前和十进制字符串。
考虑这个字符串
"some str (targetWord - 12434 trailing string)"
这个字符串不保证在'-'之前或之后有空格 所以它可能看起来像以下之一
"some str (targetWord-12434 trailing string)"
"some str (targetWord- 12434 trailing string)"
"some str (targetWord -12434 trailing string)"
"some str (targetWord- 12434 trailing string)"
到目前为止,我有以下内容
$allServices = (Get-Service "Known Service Prefix*").DisplayName
foreach ($service in $allServices){
$service = $service.split('\((.*?)\)')[1] #esc( 'Match any non greedy' esc)
if($service.split()[0] -Match '-'){
$arr_services += $service.split('( - )')[0..1]
}else{
$arr_services += ($service -replace '-','').split()[0..1]
}
}
这适用于处理“-”和“-”的简单情况,但不能处理其他任何情况。我觉得这是可以由一行或最多两行 REGEX 处理的问题。
我想要结束的是一个字符串数组,其中偶数(包括零)是 targetWord,奇数是十进制字符串。
我的问题不是我不能做到这一点,而是它看起来像垃圾...... 我的意思是我的目标是尝试使用 REGEX 来获取每个单词,忽略“-”,然后将 targetWord 和 decimalString 推送到一个不断增长的数组中。
我认为这更像是一个谜题,并试图用它来提高我的 REGEX 技能。任何帮助表示赞赏!
【问题讨论】:
-
您到底想从每个示例数据字符串中得到什么?
-
数据应该是从我的服务器上运行的服务中提取的,它是由另一个应用程序填充的。左边的数据应该是客户端的实例名,右边是他们占用的端口。
-
您可能需要将经过消毒但真实的示例数据以及正是您想要从每个示例字符串中添加到您的原始帖子中。 [grin] 查看我的答案,了解一种处理您发布的数据集的方法。
标签: regex powershell parsing