2014-10-15 2 views
0

Мне нужно создать шаблон регулярного выражения, который гарантирует, что две подстроки одной и той же строки равны.Построение регулярного выражения

т.е.

someString#MY_STRING#someString#MY_STRING#someString# 

Я попытался варианты формы:

+?#MY_STRING#+?#MY_STRING#+?# 

Но, как я делаю это для динамического my_string значения?

+1

Используйте * группы захвата * и * обратные ссылки *. Хотя я не уверен, что понимаю вашу модель. – Bergi

+0

Какую среду или язык вы используете? Если «MY_STRING» является динамическим, я предполагаю, что он находится в переменной? Вам необходимо динамически определить регулярное выражение, которое зависит от языка/среды. – funkwurm

+0

Я добавил C++ в качестве тега. Он был удален. Да, переменная, скажем: она считывается как входная, и мне нужно повторно выставить шаблон с этим вводом в список. – thenoGk

ответ

0
^[^#]*#([^#]*)#[^#]*#\1.*$ 

Try this.See demo.

http://regex101.com/r/dZ1vT6/16

+0

Спасибо, это было идеально. – thenoGk

+0

@thenoGk вы можете :) – vks

+0

Но делает это принимать во внимание случаи, как: my_string # my_string # SomeString или MY_STIRNG # SomeString # my_string – thenoGk

0

делает эту помощь? поймать group1

[^#]*#([^#]*)# 

http://regex101.com/r/iO4uL8/1

, если вы просто хотите проверить строку, то два «my_string» должно произойти в строке в определенном формате:

^[^#]*(#[^#]*#)[^#]+\1.*$ 
+0

Спасибо, второй работал. Идя по меткам времени, я проголосую за другого. – thenoGk

0

Попробуйте этот код из. . с этим регулярным выражением ((?: [az] [az] +))

+0

Спасибо, но попробовать это все же. – thenoGk