Какова правильная строка регулярного выражения -grep для поиска любых слов после левой -скобки, начинающихся с определенной буквы?

Правильный путь сxmlstarletинструментом (для разбора данных xml/html):

xmlstarlet sel -t -m '//h2' -v 'concat(., "'$'\t''",./following-sibling::p)' -n file

Выход:

Hello   World
Bells   Walls
Jelly   Minus
0
21.12.2020, 23:13
1 ответ

Вы очень близки в своих предположениях. В регулярном выражении последовательность p*.означает «ноль или более символов p, за которыми следует ровно один любой символ» :

.
  • *-Ноль или более предыдущих токенов
  • .-Ровно один символ

Более распространенным «глобальным подстановочным знаком» в регулярном выражении является .*, что означает «Один или несколько символов любого типа».

Ваше предположение сработало, потому что в вашем выражении не было $токена (, указывающего на «конец домена» ).

В этом случае вам, вероятно, понадобится выражение/glob\.glob(p.*/:

  • glob\.glob(p-литеральная строка glob.glob(p, за которой следует
  • .*-хотя бы один символ любого типа

Чтобы уточнить, если, например, вы хотите более широко сопоставить все вызовы glob.glob(), вы можете сделать что-то вроде/glob\.glob\([a-z_+ ]+\)/:

  • glob\.glob\(-литеральная строкаglob.glob(
  • [a-z_+ ]+-одна или несколько из любой из :любой буквы a -z, подчеркивания, a +или пробела
  • \)-буквальное)
1
18.03.2021, 22:41

Теги

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