我需要正则表达式的帮助。 我有这样的文字,其中包含几行:
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.*
但未能实现我的目标。
答案 0 :(得分:2)
您可以使用:
(?s)^(?!.*\bAccount Name:[^$\n]*(?:\n|$)).*
此模式使用否定前瞻以确保没有没有$ -character的帐户名称,然后只匹配整个文本。