Условие If-else в Regex [duplicate]

str () в python для целого числа не будет печатать никакие десятичные числа.

Если у вас есть float, который вы хотите игнорировать десятичную часть, тогда вы можете использовать str (int (floatValue)).

Возможно, следующий код продемонстрирует:

  & gt; gt; & gt; gt;  str (5) '5' & gt; & gt; & gt; & gt;  int (8.7) 8  
5
задан Billy Moon 22 February 2013 в 13:01
поделиться

1 ответ

В конкретном случае вашего регулярного выражения гораздо проще и читабельнее использовать чередование:

(?:sunday|saturday)

Или вы можете создавать чередование только между двумя позициями, в которых задействовано условное регулярное выражение (это более полезен в случае, когда существует много таких условных выражений, но относится только к соседней группе захвата). Используя пример в качестве примера, мы создадим только чередование для un и atur, поскольку только те, которые вовлечены в условие:

s(?:un|atur)day

Существует 2 общих типа условных регулярное выражение. (Есть более экзотические вещи, поддерживаемые регулярным выражением Perl, но для них требуется поддержка функций, которые не имеют регулярного выражения JavaScript или другого общего механизма regex).

  1. Первый тип - это то, шаблон предоставляется как условие. Этот тип можно передразпировать в JavaScript regex. На языке, поддерживающем условное регулярное выражение, шаблон будет выглядеть следующим образом:
    (?(conditional-pattern)yes-pattern|no-pattern)
    
    В JavaScript вы можете имитировать его с опережением, с (очевидным) предположением, что исходный conditional-pattern является перспективным:
    ((?=conditional-pattern)yes-pattern|(?!conditional-pattern)no-pattern)
    
    необходим негативный внешний вид, чтобы предотвратить случаи, когда входная строка передает conditional-pattern и сбой в yes-pattern, но она может соответствовать no-pattern. Это безопасно, потому что положительный внешний вид и негативный внешний вид логически совпадают друг с другом.
  2. Второй тип - это ссылка на группу захвата (имя или номер) , и условие будет оценено как true, если группа захвата имеет совпадение. В этом случае нет простого решения. Единственный способ, о котором я думаю, - это дублирование, как то, что я сделал с вашим примером в качестве примера. Это, конечно, уменьшает ремонтопригодность. Можно создать регулярное выражение, записав их по частям (в литеральном RegExp), извлеките строку с атрибутом source, затем соедините их вместе; это позволит изменениям распространяться на другие дублированные части, но затрудняет понимание регулярного выражения и / или делает для него существенную модификацию.

Ссылки

12
ответ дан nhahtdh 16 August 2018 в 02:32
поделиться
Другие вопросы по тегам:

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