Это регулярное выражение должно работать для вас \s+(?=[^()]*(?:\(|$))
result = re.split(r"\s+(?=[^()]*(?:\(|$))", subject)
Объяснение
r"""
\s # Match a single character that is a “whitespace character” (spaces, tabs, and line breaks)
+ # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
(?= # Assert that the regex below can be matched, starting at this position (positive lookahead)
[^()] # Match a single character NOT present in the list “()”
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?: # Match the regular expression below
# Match either the regular expression below (attempting the next alternative only if this one fails)
\( # Match the character “(” literally
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
$ # Assert position at the end of a line (at the end of the string or before a line break character)
)
)
"""
Это однострочное сокращение для оператора if-else. Это называется условным оператором.1
Вот пример кода, который можно укоротить условным оператором:
if(userIsYoungerThan21) {
serveGrapeJuice();
}
else {
serveWine();
}
Это можно сократить с помощью ?:
:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
В условном операторе Javascript можно оценить выражение, а не просто выражение:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
Они могут быть даже скованы:
userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
Будьте осторожны, иначе вы закончите со свернутым кодом следующим образом:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1 Часто называется «тройным оператором», но на самом деле это всего лишь тройной оператор [оператор, принимающий три операнда]. В настоящее время это единственный JavaScript.
(sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>";
sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"
sunday ?
.it должен быть sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"
– TheRealMrCrowley
5 May 2017 в 18:02
Это называется ternary operator
. Для получения дополнительной информации, вот еще один вопрос, который я ответил относительно этого:
var olderThan20 = age > 20;
.
– BalusC
7 June 2011 в 03:15
conditional operator
. В JS существует только один тернарный оператор в JS, поэтому условия злоупотребляют.
– Gone Coding
10 November 2014 в 11:10
Он называется тернарным оператором
tmp = (foo==1 ? true : false);
z = (x == y ? 1 : 2);
эквивалентно
if (x == y)
z = 1;
else
z = 2;
, за исключением, конечно, короче.
x = 9
y = 8
унарный
++x
--x
Двоичный
z = x + y
Тройной
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
Эй, помощник, просто помните, что работа js оценивается как истинная, так и ложная, не так ли?
возьмем тернарный оператор:
questionAnswered ? "Awesome!" : "damn" ;
Сначала js проверяет, является ли questionAnswered true
или false
.
, если true
( ?
), вы получите «Удивительный!»
else (:
) вы получите «damn»;
Надеюсь, это поможет другу :)
Это if statement
все в одной строке.
Итак,
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
Выражение, которое должно быть оценено, находится в ( )
If он соответствует true, выполняет код после ?
Если он соответствует false, выполните код после :
Я хочу, чтобы добавлял некоторые к данным ответам.
В случае, если вы сталкиваетесь (или хотите использовать) тернар в ситуации вроде «отображать переменную, если она установлена , else ... ', вы можете сделать его еще короче, без тройного .
Вместо:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
Вы можете use:
var welcomeMessage = 'Hello ' + (username || 'guest');
Это Javascript, эквивалентный сокращенному тройному оператору PHP ?:
Или даже:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
Он оценивает переменную, и если она ложна или не задана, она переходит к следующей.
Тернарный оператор
Обычно мы имеем условные утверждения в Javascript.
Пример:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
, но он содержит две или более строк и не может назначать переменную. У Javascript есть решение для этой проблемы. Тернарный оператор. Терминальный оператор может записывать в одну строку и присваивать переменной.
Пример:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
Этот оператор Ternary аналогичен на языке программирования C.
Условный (тернарный) оператор является единственным оператором JavaScript, который принимает три операнда. Этот оператор часто используется как ярлык для оператора if.
condition ? expr1 : expr2
Если условие истинно, оператор возвращает значение expr1; в противном случае он возвращает значение expr2.
function fact(n) { if (n > 1) { return n * fact(n-1); } else { return 1; } // we can replace the above code in a single line of code as below //return (n != 1) ? n * fact(n - 1) : 1; } console.log(fact(5));
Для получения дополнительных пояснений прочитайте ссылку MDN document
ternary
является типом i> оператора (т. Е. Имеет 3 части). Имя этого конкретного тернарного оператора i> являетсяconditional operator
. В JS существует только один тернарный оператор в JS, поэтому условия злоупотребляют. – Gone Coding 10 November 2014 в 11:12||
, так как он закорочен, если значение слева правдиво. – Peter Olson 18 October 2017 в 14:11