Поиск: /<presence\b(?=[^><]*\sto\s*=)[^><]*\sfrom\s*=\s*["']([^><"']*)["'].*?</presence>/gis
$1
будет относиться к тому, кто его, например, room@conference.server.org/testsubject_2
Работает, даже если to
/ from
в другом порядке.
Это работает, даже если XML использует одинарные кавычки, но между одинарными кавычками не должно быть одинарных кавычек. Я могу улучшить это поведение дальше, но регулярное выражение станет длиннее.
Если вы принимаете во внимание искаженные документы XML, вы не должны использовать регулярные выражения, вместо этого используйте DOM или XPath.