Дано:Невозможно сопоставить многострочный регулярное выражение с Powershell (но он работает в C#)
PS D:\tmp> cat .\1.txt
<abc xyz="1"
def="xx">
xaxa
</abc>
<abc xyz="a">
PS D:\tmp>
То, что я пытался:
PS D:\tmp> cat .\1.txt | sls '(?m:)<abc[^>]+>'
<abc xyz="a">
PS D:\tmp> cat .\1.txt | sls '(?m:)<abc(?:[^>]|$)+>'
<abc xyz="a">
PS D:\tmp> cat .\1.txt | sls '(?m:)<abc(?:[^>]|\$)+>'
<abc xyz="a">
PS D:\tmp>
Теперь я знаю, что все три варианта работы, как ожидается, в простой C#. Например:
PS D:\tmp> [Text.RegularExpressions.Regex]::Matches($(cat 1.txt), '(?m:)<abc[^>]+>')
Groups : {<abc xyz="1" def="xx">}
Success : True
Captures : {<abc xyz="1" def="xx">}
Index : 0
Length : 27
Value : <abc xyz="1" def="xx">
Groups : {<abc xyz="a">}
Success : True
Captures : {<abc xyz="a">}
Index : 42
Length : 13
Value : <abc xyz="a">
PS D:\tmp>
Итак, мне интересно - то, что я делаю неправильно в чистом Powershell, что он не работает?