PHP Regex для получения строки между # и #

0

Я как бы застрял в очень простом регулярном выражении. Я уже пробовал много чего, но без результата, поэтому я пойду с простым:

Я хочу получить многострочный результат (для замены его позже, но я уже написал эту часть, и он работает хорошо), который должен находиться между символом '#'. здесь образец файла:

# Zulu 9.8.9.8
add method 9.8.9.8 {ssh} {telnet}
add password 9.8.9.8 {jouejoue}
add user 9.8.9.8 {Zekrom}
# Zulu 1.1.1.1
add method 1.1.1.1 {ssh} {telnet}
add password 1.1.1.1 {mypassword}
add user 1.1.1.1 {adminstyle}
# Zulu 2.2.2.2
add method 2.2.2.2 {ssh} {telnet}
add password 2.2.2.2 {diffpassword}
add user 2.2.2.2 {pixyokadi}

Я использовал 's', например '/regex/s', поэтому "\n" будет считаться в '.' голец. Я хотел использовать [^ #], но он отменил вариант 's'. Я не знаю, почему, но при использовании этого:

/#.*#/s

Второй абзац абзаца игнорирует "#" в строке "# Zulu 1.1.1.1", и я не понимаю, почему. Я попытался использовать захват-скобки тоже без успеха. Я использовал для поиска IP с регулярным выражением, но поскольку я даже не могу получить абзац, который хотел, я использовал более простой. Может ли кто-нибудь объяснить это мне?

https://regex101.com/r/tI4hQ7/2

Спасибо за прочтение.

  • 1
    Каков ваш ожидаемый результат?
  • 0
    Именно то, что мне предлагает ХШ.
Теги:

1 ответ

2
Лучший ответ

Попробуйте следующее регулярное выражение:

/#[^#]*/g

g делает глобальный поиск.

Также с [^#]* вы не будете захватывать следующие вхождения # - всего остальное, чем знак #.

Пример:

https://regex101.com/r/tI4hQ7/5

  • 0
    @AvinashRaj Это правда. Ред.
  • 0
    Поскольку в вопросе указывается (или, может быть, просто говорится, кто знает?) Между # , вы можете ограничить результат, выполнив /(?<=#)[^#]*/g , исключая знаки октохорпа-хеш-фунта на обоих концах.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню