Я бы разбил строку на ';'затем используйте отдельные регулярные выражения для каждой интересующей меня части в каждой части разделенной строки.
, пытаясь сделать это так, чтобы регулярное выражение совпадало с любым обратным циклом, вероятно, было немного излишним, и быстро выходилоконтроля, если вы добавили третью или четвертую вещь для проверки.
на самом деле вы могли бы уйти, не разбив строку на самом деле.просто перечитайте вопрос, кажется, эта строка является частью более длинной строки.
, чтобы вы могли сделать это
/^(\w+):((dbname|host)=(\w+))?;?((dbname|host)=(\w+))?/
, которое можно уменьшить до:
/^(\w+):((dbname|host)=(\w+));?+
вам может потребоваться настроить свой вкус регулярного выражения, я привык только к .net