Скобки вокруг альфа-символов, скобки вокруг чисел, за один раз [дубликат]

Это затронет только небольшую часть пользователей, но я бы хотел, чтобы это было документировано для этой небольшой части. Из-за этой проблемы этот член этой маленькой горстки потратил 6 часов на устранение неполадок с работающим PHP-почтовым скриптом.

Если вы собираетесь в университет, в котором работает XAMPP с сайта www.AceITLab.com, вы должны знать, что наш профессор не сказал нам: брандмауэр AceITLab (а не брандмауэр Windows) блокирует MercuryMail в XAMPP , Вам придется использовать альтернативный почтовый клиент, груша работает на нас. Вам нужно будет отправить учетную запись Gmail с низкими настройками безопасности.

Да, я знаю, это абсолютно бесполезно для электронной почты реального мира. Однако, из того, что я видел, академические настройки и реальный мир часто имеют очень мало общего.

6
задан CinCout 11 May 2016 в 18:19
поделиться

1 ответ

Синтаксис в условной замене является

(?{GROUP_MATCHED?}REPLACEMENT_IF_YES:REPLACEMENT_IF_NO}

. { и } необходимы, чтобы избежать двусмысленности, когда вы имеете дело с группами выше 9 и с названными группами захвата.

Так как Notepad ++ использует Boost-Extended Format String Syntax , см. эту документацию Boost :

Символ ? начинает условное выражение, общий вид:

?Ntrue-expression:false-expression

, где N - десятичная цифра.

Если под-выражение N было сопоставлено, тогда true-expression оценивается и отправляется на выход, в противном случае false-expression оценивается и отправляется на выход.

Обычно вам необходимо окружить условное выражение скобками, чтобы предотвратить неоднозначность.

Например, строка формата (?1foo:bar) заменит каждое соответствие, найденное с помощью foo, если под-выражение $1 было сопоставлено, а с bar в противном случае.

Для подвыражений с индекс больше 9 или для доступа к именованным под-выражениям:

?{INDEX}true-expression:false-expression

или

?{NAME}true-expression:false-expression

Итак, используйте ([a-zA-Z])([a-zA-Z])?/([a-zA-Z])([a-zA-Z])? и замените на (?{2}$1$2:c$1)/(?{4}$3$4:c$3).

Вторая проблема заключается в том, что вы поставили квант ? внутри группы захвата, сделав шаблон внутри группы опциональным, но не вся группа . Это заставило группу всегда «участвовать в матче», и условие всегда было бы «истинным» (всегда соответствовало). ? должна количественно определять группу.

8
ответ дан Wiktor Stribiżew 22 August 2018 в 15:26
поделиться
  • 1
    Можете ли вы также ссылаться на документацию (если есть), относящуюся к Notepad ++? – CinCout 11 May 2016 в 11:42
  • 2
    Я включил ссылку Boost. – Wiktor Stribiżew 11 May 2016 в 11:57
  • 3
    большое спасибо – CinCout 11 May 2016 в 11:57
Другие вопросы по тегам:

Похожие вопросы: