регулярное выражение: принимать, но не захватывать шаблон - PullRequest
0 голосов
/ 06 января 2019

Я хочу шаблон, который соответствует

ab
a-b
a b
a  b
a-b

, где a и b могут быть любым шаблоном, но для простоты уменьшены до a и b.

Я хочу вернуть "ab" во всех этих случаях. Могу ли я сделать все это с помощью регулярных выражений или мне нужно получить совпадающие выражения вместе с символами-разделителями и обработать их в коде, заменив указанные символы и т.п.?

1 Ответ

0 голосов
/ 06 января 2019

Возможно, вы неправильно поняли ваш смысл, если да, то извините.
Вы можете группировать вещи в regexp с кавычками (),
Например, в вашем случае:

(a)(-|\s+)?(b)

А позже используйте \1 и \3 для обозначения a и b. поэтому \1\3 будет означать ab.
Обратите внимание, что некоторые инструменты могут использовать вместо \\1\\3.
Проверьте документ вашего языка, чтобы узнать точные правила регулярных выражений.

Я не уверен, где вы будете использовать это, здесь я использую sed в качестве примера:

$ echo -e "ab\na-b\na b\na  b\n"|sed -E 's/^(a)(-| +)?(b)$/\1\3/'
ab
ab
ab
ab

Обратите внимание, что здесь используется регулярное выражение ^(a)(-| +)?(b)$, ^ и $ должны соответствовать началу и концу строки / строки.

Другими словами, эти строки могут быть accepted этим регулярным выражением - в некоторых случаях оно уже проверено.
Но если вы хотите return ab, это не просто сопоставление, а дополнительный шаг замены / реорганизации.

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