Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex PowerShell从字符串中提取文本_Regex_Powershell - Fatal编程技术网

Regex PowerShell从字符串中提取文本

Regex PowerShell从字符串中提取文本,regex,powershell,Regex,Powershell,说到正则表达式,我真的很糟糕,我已经坚持了一段时间了。如何从以下字符串中获取人员A Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip e

说到正则表达式,我真的很糟糕,我已经坚持了一段时间了。如何从以下字符串中获取人员A

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum<br>
Affected: Lorem<br>
Duty Officer: Person A<br>
Affected: Ipsum
Lorem ipsum door sit amet,一位杰出的领导者,他是一位临时劳工和大股东。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,还必须因疏忽而导致动物死亡
受影响:Lorem
值班员:人员A
受影响:同侧

提前谢谢

您可以使用索引获取文本的某一部分。这通常称为powershell中的函数。如果要指定用于拆分文本的字符,也可以使用该函数

例1
$string\u to\u convert=“值班人员:人员A”
$string_to_转换为子字符串(14,22)
>>>“人A”
例2
$string\u to\u convert=“值班人员:人员A”
$string\u to\u convert.Split(“”[2]
>>>“人A”

您可以使用下面的正则表达式来实现您的结果:

^Duty Officer: ([\w ]+)$
对上述正则表达式的解释:

^
-表示给定测试字符串的开始

([\w]+)
-表示与任何单词字符(
[0-9A-Za-z]
)以及空格字符(因为名称可能包含空格)匹配一次或多次的捕获

$
-表示给定测试字符串的结尾

您可以找到上述正则表达式的演示

POWERSHELL命令:(您可以根据需要相应地更改命令)

上述结果接受您通过test.txt文件提供的输入,并在testResult.txt文件中打印所需的输出注意,在
选择字符串
命令中,仅捕获我使用的组1
$\u.Matches.groups[1]


以便更好地了解上述使用的命令;请参考另一种方法。它假定数据是一个多行字符串,并且该字符串中只包含一个目标文本块

它的作用

  • 生成要处理的多行字符串
  • 设置要拆分的前缀
  • 设置要拆分的后缀
  • 在前缀上拆分
  • 获取结果数组中的最后一项
  • 在后缀上拆分
  • 获取该数组中的第一项
  • 删除任何前导或尾随空格
  • 将该值指定给$Var
  • 显示该值
代码

# this presumes the data is ONE multiline string
#     and that there are no other blocks of data in the string
$InStuff = @'
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum<br>
Affected: Lorem<br>
Duty Officer: Person A<br>
Affected: Ipsum
'@

$Prefix = 'Duty Officer:'
$Suffix = '<br>'

$DutyOfficer = (($InStuff -split $Prefix)[-1] -split $Suffix)[0].Trim()

$DutyOfficer
#这假定数据是一个多行字符串
#并且字符串中没有其他数据块
$InStuff=@'
知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,还必须因疏忽而导致动物死亡
受影响:Lorem
值班员:人员A
受影响:同侧 '@ $Prefix='值班官员:' $Suffix='
' $DutyOfficer=($InStuff-split$Prefix)[-1]-split$Suffix)[0].Trim() $DutyOfficer

output=
Person A

上拆分,将结果数组中的第二项,修剪前导/尾随空格,最后将其保存为$Var.[grin]@Lee_Dailey谢谢你的伙伴,我已经稍微编辑了我的原始问题,因为它增加了一些复杂性-有什么想法吗,修复格式设置以明确什么是示例数据-将其包装为代码格式。//所以输入只是一个多行字符串吗?它是字符串数组吗?它离一个装满字符串的文件只有一个街区吗?谢谢你的朋友,我已经对我的原始问题进行了一些编辑,因为有一些额外的复杂性-有什么想法吗?
# this presumes the data is ONE multiline string
#     and that there are no other blocks of data in the string
$InStuff = @'
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum<br>
Affected: Lorem<br>
Duty Officer: Person A<br>
Affected: Ipsum
'@

$Prefix = 'Duty Officer:'
$Suffix = '<br>'

$DutyOfficer = (($InStuff -split $Prefix)[-1] -split $Suffix)[0].Trim()

$DutyOfficer