Я хочу, чтобы регулярное выражение в php соответствовало операторам: {{User:JYBot/count|700,000}}
commnet: только число 700 000 является переменным, а другое фиксировано.
Я написал это: '/\{\{User:JYBot/count\|\d{1,10}\}\}/' но он не работает должным образом из-за существования / в нем. Это регулярное выражение тоже не правильно работать: '/\{\{User:JYBot\/count\|\d{1,10}\}\}/'
Пожалуйста, помогите мне об этом. С уважением
Немного практические советы. Возьмите свою строку:
{{User:JYBot/count|700,000}}
Приложите части, которые должны быть сопоставлены дословно в \Q...\E :
\Q{{User:JYBot/count|\E ... \Q}}\E
Теперь замените динамическую часть 700,000 своим шаблоном, например [\d,]{1,10} :
\Q{{User:JYBot/count|\E[\d,]{1,10}\Q}}\E
Добавьте разделители (есть больше / , не принимайте ни одну часть строки до сих пор или что-то с круглыми скобками вроде () / {} или [] ), и вы закончили:
~\Q{{User:JYBot/count|\E[\d,]{1,10}\Q}}\E~
Попробуйте следующее:
/\{{2}User:JYBot\/count\|([0-9\,]+)\}{2}/is
Вы, однако, получите запятую в номере, поэтому вам нужно будет str_replace его.
Это должно работать, предполагая, что число разделено запятыми:
/\{\{User:JYBot\/count\|\d{1,3}(?:,\d{3})*\}\}/
Вам либо нужно избегать косой черты, либо использовать разные разделители:
сбрасывание косых черт:
'/\{\{User:JYBot\/count\|\d{1,10}\}\}/'
разные разделители:
'~\{\{User:JYBot/count\|\d{1,10}\}\}~'
Вам нужно избежать / из парсера регулярных выражений, что означает, что парсеру необходимо увидеть a \ before it. Тем не менее выражение expresion строки "\/" будет оцениваться как "/" – вы избегаете косой черты из строкового литерала синтаксического анализатора PHP, и поэтому символ \ не заканчивается как часть окончательной строки.
Чтобы получить фактическое \ в строке, используйте два из них:
'/\{\{User:JYBot\\/count\|\d{1,10}\}\}/'
Затем анализатор регулярных выражений увидит \/ последовательность, которую вы намереваетесь.