^, $Когда использовать этот символ в регулярном выражении?

    Owner
                      Owner: ABC
                     Address: XYZ            
    Information

Это шаблон, который я пытаюсь выполнить. Я хочу сопоставить данные между Владельцем и информацией, но исключая заголовки, используя Regex like,

(?<=(\s*Owner))(.|\n)*?(?=\s*Information)

Когда я пытаюсь добавить ^ и $, чтобы быть более точным, это не соответствует.

(?<=(/^\s*Owner))(.|\n)*?(?=\s*Information/$)

Не могли бы вы помочь мне в этом?

Ответы

Ответ 1

Вы не даете достаточно деталей. Поскольку ваше первое выражение работает, я предполагаю, что вы используете режим Singleline.

Следующее мое предположение состоит в том, что эта строка является частью большей строки.

^ соответствует началу строки по умолчанию

$ по умолчанию соответствует концу строки .

Теперь, поскольку ваша строка содержит материал до и после, вам нужно изменить это поведение по умолчанию:

С модификатором Multiline, ^ соответствует началу строки и $ концу строки. Подробнее см. .

Итак, ваше регулярное выражение должно выглядеть примерно так:

Regex regx = new Regex("(?<=^(\s*Owner))(.|\n)*?(?=\s*Information$)", RegexOptions.Singleline | RegexOptions.Multiline);