Мне нужна помощь с регулярным выражением. У меня есть текст, как это, который содержит несколько строк:
Message=A logon was attempted using explicit credentials.
Subject:
Security ID: NT AUTHORITY\SYSTEM
Account Name: SERVER1$
Account Domain: EXAMPLE.ORG
Logon ID: 0x3E7
Logon GUID: {00000000-0000-0000-0000-000000000000}
Account Whose Credentials Were Used:
Account Name: user1
Account Domain: EXAMPLE.ORG
Logon GUID: {15CEA50D-0E2C-2FFC-6FDF-46CDFC48AE34}
Target Server:
Target Server Name: localhost
Additional Information: localhost
Process Information:
Process ID: 0x38e0
Process Name: C:\Windows\System32\winlogon.exe
Network Information:
Network Address: 10.9.8.7
Port: 0
мне нужно регулярное выражение, которое будет соответствовать все сообщения, если все строки с
Account Name:
линий следует текст с «$ '
В этом примере есть две строки с "Account Name:"
- в нем есть '$'
, второй - не так. Если есть одна или несколько строк с "Account Name:"
, но все они содержат '$'
, затем совпадают.
Я пробовал различные из них, как это:
(?s)Account Name:\s+(?!(\$))\n.*
но не удалось достичь своей цели.
Попробуйте ['/\A(?!.*^\h*Account Имя: [^ $ \ n \ r] * $). * \ Z/sm'] (https://regex101.com/r/uE2kO0/1) для PCRE. –
OP, можете ли вы проверить, что заголовок точно описывает проблему? В моей интерпретации он описывает нечто иное, чем содержание (оно должно, по-видимому, идти по строкам «(...), только если все строки, содержащие определенную строку, содержат $»). – werkritter