Regex - & ldquo; If-Then-Else Conditionals & rdquo; в Notepad ++ или любой поддерживаемой environement [duplicate]

Для тех, кто хочет того же, но использует React

openFileInput = () => {
    this.fileInput.click()
}

<a href="#" onClick={this.openFileInput}>
    <p>Carregue sua foto de perfil</p>
    <img src={img} />
</a>
<input style={{display:'none'}} ref={(input) => { this.fileInput = input; }} type="file"/>
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 17 August 2018 в 10:11
поделиться
  • 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
Другие вопросы по тегам:

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