Regex 正则表达式过滤掉特定字符串后面的特征
关于正则表达式,这不是我的第一个问题,但是我仍然在努力让表达式按照我的意愿工作 我有一行不同信息的结构化文本。我只想保留两个特性Regex 正则表达式过滤掉特定字符串后面的特征,regex,powershell,Regex,Powershell,关于正则表达式,这不是我的第一个问题,但是我仍然在努力让表达式按照我的意愿工作 我有一行不同信息的结构化文本。我只想保留两个特性连接器:和E_DE_HH: 让我提供一个文本行示例: [10:26:33]: Connector: 8965 Info1: 8 Info2: 8 Info3: 4 E_DE_HH: 6000 Info4: 99 输出应为: 8965 6000 哪个表达式可以为我提供正确的输出?我试图替换除了命名特征后面的数据之外的所有内容,但这会过滤掉所有内容。我对这些表达感到困惑
连接器:
和E_DE_HH:
让我提供一个文本行示例:
[10:26:33]: Connector: 8965 Info1: 8 Info2: 8 Info3: 4 E_DE_HH: 6000 Info4: 99
输出应为:
8965 6000
哪个表达式可以为我提供正确的输出?我试图替换除了命名特征后面的数据之外的所有内容,但这会过滤掉所有内容。我对这些表达感到困惑
谢谢你的帮助 您的筛选器可以是:
*连接器:([0-9]*).*E_DE_HH:([0-9]*).
,而您的替换将是:\1\2
查看此示例。您可以对字符串使用
-match
运算符,然后使用$matches
变量替换匹配的组
PS Y:\> '[10:26:33]: Connector: 8965 Info1: 8 Info2: 8 Info3: 4 E_DE_HH: 6000 Info4: 99' -match 'Connector: (\d*).*E_DE_HH: (\d*)'
True
PS Y:\> "$($matches[1]) $($matches[2])"
8965 6000
链接看起来不错,是否可以省略前面的时间?我不需要它@MIke_H Updated我不是powershell专家,但可能使用
$1
和$2
而不是\1
和\2
。请参阅,由于powershell对空格非常挑剔,这是最后一个正确的正则表达式,对我来说运行良好*ConnID:\s([0-9]*).\sE\u MAX\u ENTRIES:\s([0-9]*).
这也是一个好方法。非常感谢。