关于正则表达式

问题描述 投票:-2回答:2

我尝试$[文本之间就搞定了。我试图解决与下面的正则表达式这个问题:

$pattern = "(?=\$\[)(.*?)(?=\$\[)"

但它只是越来越直到新生产线的负责人。这是没有得到例如

“在Fonet.Common.DicomNet.DicomAttributeCollection.Load(DicomDataSet DS)”

我怎样才能解决这个问题呢?

$ [WARN] 2019年2月1日九时14分14秒ScheduledProcedureSequence找不到$ [ERROR] 2019年2月1日11时09分02秒对象引用不设置为一个对象的一个​​实例。 System.NullReferenceException对象引用不设置为一个对象的一个​​实例。空隙负荷(Leadtools.Dicom.DicomDataSet)System.NullReferenceException:对象不设置为一个对象的一个​​实例。在Fonet.Common.DicomNet.DicomAttributeCollection.Load(DicomDataSet DS) 在Fonet.Common.DicomNet.DicomAttributeCollection.Load(DicomDataSet DS)$ [ERROR] 2019年2月1日11时09分02秒工作清单例外:对象引用不设置为一个对象的一个​​实例。 System.NullReferenceException对象引用不设置为一个对象的一个​​实例。空隙负荷(Leadtools.Dicom.DicomDataSet)System.NullReferenceException:对象不设置为一个对象的一个​​实例。在Fonet.Common.DicomNet.DicomAttributeCollection.Load(DicomDataSet DS)

regex powershell
2个回答
1
投票

点(.)操作者在正则表达式通常匹配除了行分解任何单个字符。为了匹配这些,你需要添加s标志,使匹配处理输入的单行。

你可以做到这一点最容易(?s)。这将设置标志的整个模式,所以如果你在一个更大的图案嵌入它要小心。

$pattern = "(?s)(?=\$\[)(.*?)(?=\$\[)"

此外,使用双方前瞻(qazxsw POI),并使用零或更多的懒惰重复(qazxsw POI)的副作用,它会永远匹配零个字符。你会想改变其中任何一项:

  • 使用向后看:(?= )
  • 匹配至少一个字符:*?
  • 更改第一个先行到正常模式。 (?s)(?<=\$\[)(.*?)(?=\$\[)

更多信息:

  • (?s)(?=\$\[)(.+?)(?=\$\[)
  • (?s)(\$\[.*?)(?=\$\[)

1
投票

我已经试过,但我想它不能正常工作。我已经找到了不同的方式。

Regular Expressions with Windows PowerShell

我创建新的对象时,我抓住了一个新的错误。然后我插入线到我的对象,直到我抓住了新的错误。我的问题解决了这种方式。谢谢你的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.