Высокая задержка на v4l2loopback

Проблема в том, что \1относится к совпавшему тексту, а не является регулярным выражением. В нашем случае совпадающий текст — это символ a. Поскольку \1является текстом, а не регулярным выражением, ему все равно, что следует за a. Соблюдайте:

$ cat file
a a
a ab
$ grep -E '(a\b) \1' file
a a
a ab

Если мы хотим, чтобы \1было словом, добавьте к нему границу слова:

$ grep -E '(a\b) \1\b' file
a a

Поскольку \1\bтребует границы слова после \1, вторая строка больше не соответствует.

Чтобы продемонстрировать, что \1не является регулярным выражением, давайте попробуем:

$ echo '.a' | grep -E '(.)\1'
$ 

Но:

$ echo '..' | grep -E '(.)\1'
..
$ 

Таким образом, \1соответствует .. В то время как .обычно является активным регулярным выражением -и соответствует любому символу, \1будет соответствовать только точке.

Документация

Из руководства GNU grep:

The back-reference ‘\n’, where n is a single digit, matches the substring previously matched by the nth parenthesized subexpression of the regular expression. For example, ‘(a)\1’ matches ‘aa’. When used with alternation, if the group does not participate in the match then the back-reference makes the whole match fail. For example, ‘a(.)|b\1’ will not match ‘ba’. When multiple regular expressions are given with -e or from a file (‘-f file’), back-references are local to each expression. [emphasis added.]

0
02.01.2021, 10:45
0 ответов

Теги

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