Регулярное выражение: Соответствие тегу

#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 — одна или несколько цифр.