Мне нужен RegEx, чтобы проверить, могу ли я найти выражение в строке.Перестановки регулярных выражений без повторения
Для строки «abc» я хотел бы соответствовать первому появлению любой из перестановок без повторения, в данном случае 6: abc, acb, bac, bca, cab, cba.
Например, в этой строке «adesfecabefgswaswabdcbaes» было бы найти совпадение в положении 7.
Также мне нужно то же самое для перестановок без повторений, как это «Абы». Случаи для этого 12: ACBB, ABCB, Аббв, CABB, cbab, cbba, bacb, В.А.В.С., bcab, bcba, BBAC, BBCA
Например, в этой строке "adbbcacssesfecabefgswaswabdcbaes" было бы найти совпадение в положение 3.
Кроме того, я хотел бы знать, как это было бы для подобных случаев.
EDIT Я не ищу комбинацию перестановок, нет. У меня уже есть такие. Что я ищу - это способ проверить, есть ли какая-либо из этих перестановок в заданной строке.
EDIT 2 Это регулярное выражение я думаю, что покрывает мой первый вопрос ([а]) ([а]) (\ 1?!) (\ 2 |?! \ 1) [а]
может найти все подстановки (6) «abc» в любой последовательности символов.
Теперь мне нужно сделать то же самое, когда у меня есть повторяющийся символ, такой как abbc (12 комбинаций).
Перестановки бесконечного множества без повторений не являются регулярным языком. Regex - неправильный инструмент. – Bergi
не существует оператора регулярных выражений для представления «перестановок строки». вам придется вычислить их для создания этого регулярного выражения. – 1010
Спасибо за ответ, у меня уже есть программа, которая создает все перестановки, на самом деле у меня есть эти комбинации.Мне нужно, чтобы проверить, есть ли какая-либо из этих комбинаций в более чем 2 миллионах строк, мне нужно проверить совпадения ... вот почему я думал, что регулярное выражение может быть хорошим решением. –