Успенская
Я предполагаю, что это должно быть "strings that consist of"
, не "strings which contains"
. Разница в том, что bbbbbaaabaabbbb
будет действительной строкой, если она "contains"
(так как она содержит aaabaa
).
Чтобы сделать это "strings that contains"
, единственное отличие будет добавление .*?
в начало и .*
до конца (или [ab]*?
и [ab]*
если вы хотите ограничить его a
и b
).
Анализ проблемы
Я верю, что можно упростить проблему просто "strings that consist of any number of a's followed by a single b followed by an even number of a's"
, так как 0 является четным числом.
Я понятия не имею, что ^
или U
делает в вашем регулярном выражении. Является ли этот язык специфическим синтаксисом (обычно ^
указывает начало строки/строки)?
Решение
Это должно быть так же просто, как:
a*b(aa)*
a*
- любое количество элементов а
b
- один б
(aa)*
четное число элементов а
EDIT:
Согласно комментариям, кажется, что вы можете захотеть строк, которые состоят из чего-то вроде:
- любое количество элементов а
- следует любое количество следующего:
- один б
- , за которым следует четное число (номер!= 0)
- необязательно с последующим аб
Регулярное выражение будет:
a*(b(aa)+)*b?
Она не обеспечивает строку, как aaaabaaaab –
@caesar_ Но это не вписывается в '" строк которые содержат любое число a, за которым следует один b, за которым следует четное число a '' (поскольку в конце есть 'b'). Ой, подождите, это «строки, которые состоят из ...» или «строки, которые содержат ...»? – Dukeling
Да, вы правы, но мне также нужно предоставить такой пример. Я имею в виду aaaabaaaab или aaaaabaabaabaaaa, есть ли у вас идеи? –