Некоторое время назад я уже построил следующее регулярное выражение:Проблемы с регулярных выражений
~(?:<a.*?</a>|\[url.*?\[/url]|\[/?[^]]++]|</?[^>]++>)(*SKIP)(*FAIL)|\bcdkey\s*-\s*.*\b~is
Это соответствует каждый вид Cdkey-ххх это не внутри BBcode или HTML тега. Пока все работает.
Однако, я не могу заставить его работать должным образом, когда вы используете bbcodes и html-теги. Я думал, удаление передней части достаточно, но я, кажется, не так:
~\bcdkey\s*-\s*.*\b~is
С помощью этого регулярного выражения,
<a href="https://www.google.de/#q=cdkey-0192xdasas" class="externalURL">https://www.google.de/#q=cdkey-0192xdasas</a>
становится
<a href="https://www.google.de/#q=***>
и
[url]https://www.google.de/#q=cdkey-0192xdasas[/url]
будет
[url]https://www.google.de/#q=***]
в то время как ожидаемые результаты
<a href="https://www.google.de/#q=***" class="externalURL">https://www.google.de/#q=***</a>
и
[url]https://www.google.de/#q=***[/url]
Я понятия не имею, как это исправить.
Итак, что я пытаюсь добиться того, чтобы заменить
[url]https://www.google.de/#q=cdkey-0192xdasas[/url]
[url=https://www.google.de/#q=cdkey-0192xdasas]Test[/url]
[img]https://www.google.de/#q=cdkey-0192xdasas[/img]
[url="https://www.google.de/#q=cdkey-0192xdasas"]Test 3[/url]
https://www.google.de/#q=cdkey-0192xdasas
Another plaintext cdkey - bla
<a href="https://www.google.de/#q=cdkey-0192xdasas" class="externalURL">https://www.google.de/#q=cdkey-0192xdasas</a>
<a href='https://www.google.de/#q=cdkey-0192xdasas'>Le Google</a>
с
[url]https://www.google.de/#q=***[/url]
[url=https://www.google.de/#q=***]Test[/url]
[img]https://www.google.de/#q=***[/img]
[url="https://www.google.de/#q=***"]Test 3[/url]
Plaintext https://www.google.de/#q=***
Another plaintext ***
<a href="https://www.google.de/#q=***" class="externalURL">https://www.google.de/#q=***</a>
<a href='https://www.google.de/#q=***'>Le Google</a>
Может быть, вы используете что-то, что вы понятия не имеете, что он делает? Вы используете '(* SKIP) (* FAIL)', который скажет, что двигатель регулярных выражений завершится с ошибкой. В принципе, вам нужно удалить его. – HamZa
'(* SKIP) (* FAIL)' используется только в регулярном выражении, которое работает;) Оно не используется в проблемном регулярном выражении. –
lolwut, у вас есть 1 регулярное выражение. Поэтому по определению это будет «проблематичным», иначе вы не спросите. – HamZa