Как сопоставить разнородные последовательности пробельных символов? - PullRequest
1 голос
/ 23 апреля 2019

Например: "\t\t \v" и " \f" должны совпадать. "\t\t\t", " " и "\f\f\f" не должны совпадать.

Итак, я бы хотел исключить первого захваченного персонажа, что-то похожее на этот (\s)\1*[^\S\1]+\s*. Но это не сработает, поскольку мы не можем поместить захваченную группу в [^].

Как мне этого добиться?

1 Ответ

2 голосов
/ 23 апреля 2019

Я не уверен, что правильно понял ваше требование, но вы можете попробовать с отрицательным Lookahead:

(\s)\1*(?!\1)\s+

Вам подходит что-то подобное?


Вотпример Python:

regex = r"(\s)\1*(?!\1)\s+"
inputs = ["\t\t \v", "\f", "\t\t\t", " ", "\f\f\f", "\f \f"]

for s in inputs:
    if re.match(regex, s):
        print "Found a match."
    else:
        print ("No matches!")

Вывод:

Found a match.
No matches!
No matches!
No matches!
No matches!
Found a match.

Я не уверен, почему вы ожидаете, что \f будет совпадением, если не.Если это не было ошибкой, не могли бы вы уточнить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...