Как использовать регулярное выражение для сопоставления некоторых слов, если они существуют (если не совпадают и с другими оставленными)

#regex

#регулярное выражение

Вопрос:

Например, строка:

 "0x0:dqwdq0x1:dqwd0x2-0x3:sdqwd"
  

Как мне сопоставить следующее:

 ['0x0:', '0x1:', '0x2-0x3:'] 
  

в регулярном выражении или лучше использовать re module в python? В большинстве случаев шаблоны будут в 0x [0-9], но дело в том, что иногда в строке будет дополнительный фрагмент: -0x [0-9]. Спасибо за помощь!

Комментарии:

1. Итак, в основном вам нужно сопоставить 0x#: и 0x#-0x#: ? Могут ли быть две цифры после x ?

2. Пожалуйста, не забудьте выбрать мой пост в качестве ответа, если это поможет. Дайте мне знать, если что-то пойдет не так. Спасибо!

Ответ №1:

Вы можете использовать приведенный ниже код, чтобы получить 0x0:, 0x0-0x0: или даже больше 0x0-0x0-0x0: чисел.

 ((dxd)-?) :
  

И да, python должен быть в состоянии выполнить эту работу. Пока регулярное выражение правильно соответствует тому, что вы хотите, используемый вами язык не должен иметь значения.

Ответ №2:

 0xd(-0xd)?:
  

Это регулярное выражение будет соответствовать 0x#: и 0x#-0x#: , где # — цифра. Как вы можете видеть, часть между круглыми скобками необязательна при использовании этого ? .