Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式(多行)-仅当所有行不包含$_Regex_Multiline - Fatal编程技术网

Regex 正则表达式(多行)-仅当所有行不包含$

Regex 正则表达式(多行)-仅当所有行不包含$,regex,multiline,Regex,Multiline,我需要一个正则表达式的帮助。 我有一个这样的文本,包含几行: 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 GU

我需要一个正则表达式的帮助。 我有一个这样的文本,包含几行:

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
我需要一个regexp,它将匹配整个消息,如果所有字符串

 Account Name:
行后面是带“$”的文本

在本例中,有两行带有
“帐户名:”
-其中一行包含
“$”
,第二行不包含,因此不应匹配。如果有一行或多行帐户名为“”,但所有行都包含“$”,则匹配

我试过不同的方法,比如:

(?s)Account Name:\s+(?!(\$))\n.*
但是没有实现我的目标。

您可以使用以下方法:

(?s)^(?!.*\bAccount Name:[^$\n]*(?:\n|$)).*

此模式使用负前瞻来确保没有不带$-字符的帐户名,然后只匹配整个文本。

请尝试使用PCRE.OP,您能否验证标题是否准确描述了问题?在我的解释中,它描述了与内容不同的内容(如果包含某个字符串的所有行都包含$),它可能会沿着“(…)匹配”的行进行。谢谢!它起作用了。唯一的问题是,由于某种原因,此处的换行符[^$\n]被忽略,正则表达式将字符串的任何部分中的$与帐户名匹配。