regex 删除正则表达式,然后将字符串拆分为多个字符串,并将新的子字符串与外部电子表格中的列进行比较[已关闭]

ryoqjall  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(101)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我有一个由多个主机名(可以是20个或更多)组成的字符串,这些主机名由Regex字符分隔,如下所示:第四章.|^扫描仪软件1.|加拿大软件1.|WATAX软件2.|
我的要求是在将剩余的主机名与外部电子表格中的主机名列表进行比较之前删除Regex,并突出显示任何差异(例如缺少的项)。
到目前为止,当我用Powershell或Python编写这篇文章时,我已经设法删除了正则表达式,但由于我是这两种语言的新手,因此需要一些时间才能取得进展。
这可以在Powershell或Python中完成,但首选Powershell。
任何帮助都将不胜感激。
先谢了。

Here is what I have so far in Powershell:

$a = '^WATAXEXEDGE4\.|^CANRXSOFTWAPP1\.|^CANRXSOFTWAPU1\.|^WATAXSOFTWAPP2\.|'

$Hostnames = $a -replace '[^a-zA-Z0-9]', "\"

$Hostnames -replace "\\", " "
returns: "WATAXEXEDGE4    CANRXSOFTWAPP1    CANRXSOFTWAPU1    WATAXSOFTWAPP2"


And here is what I have in Python:

import re
import pandas

str = input("Enter Regex : ")

pattern= r"['^\', '.|']"

str = re.sub(pattern, '', str)

print (str)
returns: "WATAXEXEDGE4\CANRXSOFTWAPP1\CANRXSOFTWAPU1\WATAXSOFTWAPP2\"

这是正确的方法还是有更好/更容易的方法来实现这一点?

pnwntuvh

pnwntuvh1#

一个PowerShell解决方案,它 * 假定 * 您希望从正则表达式中提取主机名并将它们存储在一个 * 数组 * 中:

$regex = '^WATAXEXEDGE4\.|^CANRXSOFTWAPP1\.|^CANRXSOFTWAPU1\.|^WATAXSOFTWAPP2\.|'

# Split by by '|', remove empty elements, 
# then remove everything except word chars. and "-" from each element.
$hostnames = $regex -split '\|' -ne '' -replace '[^\w-]'

这有效地将以下数组存储在$hostnames中(表示为PowerShell数组文字):

@('WATAXEXEDGE4', 'CANRXSOFTWAPP1', 'CANRXSOFTWAPU1', 'WATAXSOFTWAPP2')

相关问题