Regex вопрос, чтобы получить ключи - PullRequest
4 голосов
/ 19 апреля 2010

У меня есть такой текст шаблона:

Здравствуйте, {#Name #},

Спасибо, что пришли, бла, {# Date #} и мы рады видеть вас снова здесь с {#President #}

Итак, я пытаюсь получить {#...#} частей шаблонов и поместить их в массив.

Но мое выражение лица не сработало:

\b(?<=\{\#)(.*)(?=\#\})\b

Результат стал примерно таким для этого образца текста:

{#Something#} Hello {#Brand#} 

Результат:

Something#} Hello {#Brand

Ответы [ 2 ]

4 голосов
/ 19 апреля 2010

Просто добавить? за лень вот так:

\b(?<=\{\#)(.*?)(?=\#\})\b

*? означает , что он будет искать как можно меньше повторов

3 голосов
/ 19 апреля 2010

Как насчет этого? {#([^#]+)#}

Вот пример, используемый в скрипте PowerShell:

$input = "{#Something#} Hello {#Brand#}"

$match = [regex]::Match($input, "{#([^#]+)#}")

$i = 0

while ($match.Success) {
    $i++
    write-host ("Match {0}: '{1}'" -f $i, $match.Groups[1].Value)
    $match = $match.NextMatch()
}

И вот что он выводит:

Match 1: 'Something'
Match 2: 'Brand'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...