2017-02-03 2 views
0

Я пытаюсь написать регулярное выражение для захвата некоторых AV-данных, найденных в различных полезных данных из Защитника Windows.учетная запись для пробелов в группе захвата

Общая строка:

TargetUser: 

Проблема заключается в том, когда пытаются захватить имя пользователя, которое содержит пробелы. Моя регулярное выражение ниже только захватывает "NT" - См test string на Regex101

TargetUser: "CONTOSO\JDoe" 
TargetUser: "NT AUTHORITY\SYSTEM" 

Regex:

TargetUser:\s+([^ ]+) 
+0

Вы исключаете «пробел», так зачем его вообще захватывать? – dognose

ответ

4

вы можете использовать TargetUser:\s+"([^"]+)"

"([^"]+)": матч " затем захватить все до "

Regex Demo


Если вы хотите, чтобы захватить " тоже переместите " внутри группы захвата, как

TargetUser:\s+("[^"]+")

+1

И добавьте окончательный '' ', если вам нужно это' '([^"] + ")' –

+0

@MuratK. спасибо –

+1

FWIW, его оригинальное регулярное выражение захватывает оба кавычки, а ваш нет. –

0

Ваше регулярное выражение говорит «один или несколько пробелов следуют одно или более пробелов». Каковы допустимые символы, которые могут отображаться в ваших именах пользователей? Предположим, что это пробелы, альфы и числа. Регулярное выражение для этого было бы [a-zA-Z0-9] +

Смежные вопросы