我完全不知道这里发生了什么,所以我把它交给云端思维来弄清楚,抱歉。
我有一个string
(已确认.gettype()
),其摘录如下(每行末尾都有 \r\n):
Request Inputs
Inputs With Value
Displaying 17 out of 19 inputs
Company Division
<my company name>
但是,当按照下面的模式运行时,无法弄清楚为什么会产生System.Collections.Hastable[1]
。$Matches[1]
最主要的是,它是空的。为什么?
$TextBoxText -match '(?s).*(?:Company Division[\r\n])([^\r\n]*)'
假设您想知道为什么当前模式未
<my company name>
在捕获组中捕获1
,原因是因为在 Windows 中,字符串的新行通常是 CRLF ,并且使用您当前的字符类[\r\n]
,您允许CR 和 LF,但只能匹配其中任何一个。所以你可以这样做:然后该模式就可以正常工作了,但更好的是使用
\r?\n
它在任何操作系统上都可以很好地工作:在这两种情况下,非捕获组都可以被删除,没有理由把它放在那里。你也可以
(?s).*
从模式中删除,暂时保留它,因为目前还不清楚意图是什么。如果你只对捕获后面的内容感兴趣Company Division
,那么模式可以是: