Я хочу, чтобы регулярное выражение в 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}\}\}/'
Затем анализатор регулярных выражений увидит \/
последовательность, которую вы намереваетесь.