以下python代码:
import re
line="http://google.com"
procLine = re.match(r'(?<=http).*', line)
if procLine.group() == "":
print(line + ": did not match regex")
else:
print(procLine.group())
Run Code Online (Sandbox Code Playgroud)
匹配不成功,输出如下错误:
回溯(最近一次调用):文件“C:/Users/myUser/Documents/myScript.py”,第 5 行,如果 procLine.group() ==“”:AttributeError: 'NoneType' 对象没有属性 'group '
当我只用 .* 替换正则表达式时,它工作正常,这表明它是错误的正则表达式,但是,在https://regex101.com/ 上,当我测试我的正则表达式和 python 风格的字符串时,它似乎匹配得很好。
有任何想法吗?
对于以后的 powershell 版本,我可以毫无问题地使用以下内容:
$contents = Get-Content $path -raw
if ($contents -match $regex) {
$result = $matches[0]
}
Run Code Online (Sandbox Code Playgroud)
但是在 powershell 版本 2 中,Get-Content 没有 -raw 开关,但是如果没有 -raw 开关,正则表达式匹配步骤总是失败;$matches 似乎是 $null。
我不确定这个“原始”参数的内部工作原理,因为微软在各自的文档页面上提供了一个相当可悲的描述,所以我不确定如何解决它。
因此,例如,我有一个自定义对象$server。我想创建一个新属性,$server.output以包含大小不同的多行输出。最好的方法是什么?关于如何向对象添加简单的字符串属性,网络上似乎没有任何直接的信息?
仅供参考,我使用的是Powershell v4,但也可以为v5提供解决方案。
我发现了一些类似的问题,但令人惊讶的是,它们都不适合我.
我用脚本编写了这个:
for d in $(ls -d "$1"); do
echo $d
done
$ 1是我希望打印出子目录列表的父目录,但是,运行它打印出来,例如,名为"dir with spaces"的目录在不同的行上作为3个单词.