Возможно, вы неправильно поняли ваш смысл, если да, то извините.
Вы можете группировать вещи в 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
, это не просто сопоставление, а дополнительный шаг замены / реорганизации.