#regex
Вопрос:
Итак, у меня есть этот тег:
^27=10^**370=B10,11**^ 312=7,12,-10,1000 ^368=5,5,10 ^375=B12,2^26=8.0000 ^369=1.0000^5=8.0000^6=9.0000^14=1^15=1^263=1^MVAL=100^NOIA=1
Я пытаюсь сопоставить 11 из 370=B10,11.
В настоящее время у меня есть это:
(?<=^370=Bdd,)[d]
который работает в данном случае, но число, следующее за буквой B, может состоять из 1 или 2 цифр, и это:
(?<=^370=Bd ,)[d]
не работает, потому что lookbehind требует фиксированной ширины.
Любая идея, как я могу сделать это надежным для работы в различных комбинациях: 370=B1,11
и 370=B10,11
Комментарии:
1. Где вы используете регулярное выражение? Покажите код. Более того, почему бы вам просто не записать номер? С
^370=Bd ,(d )
помощью ( демо )?2. Никакого определенного языка программирования. Платформа принимает регулярные выражения широкого использования. Теги представляют собой сгенерированный текст, который сопоставляется с определенными полями (B1-15 и 1-12).
3. Реализации регулярных выражений иногда сильно отличаются друг от друга. В .NET ваше второе регулярное выражение <a rel=»noreferrer noopener nofollow» href=»https:///regexstorm.net/tester?p=(? работает нормально . Итак, каков ВАШ вкус регулярных выражений?
4. хм…хороший вопрос, нужно будет это выяснить.
5. Ладно, давай попробуем.
^370=Bd ,Kd
?
Ответ №1:
Вы можете использовать регулярное выражение, совместимое с PCRE/Boost/Ongigmo, например
^370=Bd ,Kd
Смотрите демонстрацию регулярных выражений. Подробные сведения:
^370=B
—^370=B
текстd
— одна или несколько цифр,
— запятаяK
— оператор сброса соответствия, который удаляет текст, совпадающий до сих пор, из общего буфера памяти соответствияd
— одна или несколько цифр.