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

Т.е.

someString#MY_STRING#someString#MY_STRING#someString#

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

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

Но как это сделать для динамических значений MY_STRING ?

0
thenoGk 15 Окт 2014 в 13:29
1
Используйте группы захвата и обратные ссылки. Однако я не уверен, что понимаю вашу схему.
 – 
Bergi
15 Окт 2014 в 13:33
Какую среду или язык вы используете? Если MY_STRING является динамическим, я предполагаю, что он находится в переменной? Вам нужно будет динамически определить регулярное выражение, которое зависит от языка/среды.
 – 
asontu
15 Окт 2014 в 13:34
Я добавил C++ в качестве тега. Он был удален. Да, переменная, скажем: она читается как ввод, и мне нужно регулярно выражать шаблон с этим вводом в список.
 – 
thenoGk
15 Окт 2014 в 13:35
Нет смысла добавлять тег C++, если вы не укажете, какую библиотеку регулярных выражений C++ вы используете, например. std::regex, boost::regex, другое?
 – 
Paul R
15 Окт 2014 в 13:36
Этот комментарий мало что значит для меня. Я согласен с тем, что если OP уже выбрал библиотеку регулярных выражений, они должны упомянуть об этом, но если вы знаете, что это легко сделать с такой-то библиотекой регулярных выражений, возможно, OP мог бы основывать свой выбор библиотеки на ответах, нет?
 – 
asontu
15 Окт 2014 в 13:41

3 ответа

Лучший ответ
^[^#]*#([^#]*)#[^#]*#\1.*$

Попробуйте это. См. Демонстрацию.

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

0
vks 15 Окт 2014 в 13:34
Спасибо, это было прекрасно.
 – 
thenoGk
15 Окт 2014 в 16:15
Но учитываются ли при этом такие случаи, как: MY_STRING#MY_STRING#someString или MY_STIRNG#someString#MY_STRING
 – 
thenoGk
17 Окт 2014 в 08:33
Спасибо, я проверю!
 – 
thenoGk
17 Окт 2014 в 09:29

Это помогает? поймать группу1

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

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

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

^[^#]*(#[^#]*#)[^#]+\1.*$
0
Kent 15 Окт 2014 в 13:36
Спасибо, второй заработал. Судя по временным меткам, я голосую за другого.
 – 
thenoGk
15 Окт 2014 в 16:15

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

0
15 Окт 2014 в 13:46
Спасибо, но пока не пробовал.
 – 
thenoGk
15 Окт 2014 в 16:15