Я имею дело с радиосигналами, которые иногда имеют шумовые шипы.
вход что-то вроде этого:
00000001111100011110001111100001110000001000001111000000111001111000
Regex для устранения пиков шума сигнала бит
Перед синтаксического анализа данных в сигнале, нужно удалить шип биты, которые являются 0 и 1 в последовательность с длиной ниже (в данном примере) 3.
поэтому в основном я должен соответствовать 0000000111110001111000111110000111000000(1)000001111000000111(00)1111000
После матча я заменить его на немного, прежде чем он, так что чистый вид сигнала, как это: 00000001111100011110001111100001110000000000001111000000111111111000
до сих пор я достиг этого с двумя сиситемами аренда Regex:
self.re_one_spikes = re.compile("(?:[^1])(?P<spike>1{1,%d})(?=[^1])" % (self._SHORTEST_BIT_LEN - 1))
self.re_zero_spikes = re.compile("(?:[^0])(?P<spike>0{1,%d})(?=[^0])" % (self._SHORTEST_BIT_LEN - 1))
Затем я повторяю спички и заменяю.
Как это сделать с помощью одного регулярного выражения? Могу ли я использовать регулярное выражение для замены совпадений разных размеров?
я пытался что-то вроде этого без успеха:
re.compile("(?![\1])([01]{1,2})(?![\1])")
Таким образом, вы в основном хотят заменить любой изолированный одинарной или двойной 1 или 0 с 0 или 1 соответственно? –
Да, не обязательно одиночные или двойные, но ниже определенного размера. – joaoricardo000
Кроме того, что не так с двумя регулярными выражениями? Если вам не нравится дублирование кода (действительная точка), вы можете использовать одну строку шаблона и заменить на нее 0 и 1. –