Для просмотра данных я использую регулярные выражения. Один из моих регулярных выражений (они динамичны и изменяются в зависимости от того, что компьютер должен искать --- использовать их для поиска с помощью данных для игры AI):Python Regular Expressions Findall
O,2,([0-9],?){0,},X
После 2, может (и, скорее всего, будут) другими числами, за которыми следует запятая.
В моем понимании, это будет соответствовать:
O,2,(any amount of numbers - can be 0 in total, each followed by a comma),X
Это нормально, и работает (в RegExr) для:
O,4,1,8,6,7,9,5,3,X
X,6,3,7,5,9,4,1,8,2,T
O,2,9,6,7,11,8,X # matches this
O,4,6,9,3,1,7,5,O
X,6,9,3,5,1,7,4,8,O
X,3,2,7,1,9,4,6,X
X,9,2,6,8,5,3,1,X
Моя проблема заключается в том, что мне нужно, чтобы соответствовать все цифры после оригинал, предоставленный номер. Итак, я хочу совместить (в примере) 9,6,7,11,8
.
Однако реализация этого в Python:
import re
pattern = re.compile("O,2,([0-9],?){0,},X")
matches = pattern.findall(s) # s is the above string
matches
является ['8']
, последний номер, но мне нужно, чтобы соответствовать всем номерам после заданного (так '9,6,7,11,8'
).
Примечание: Мне нужно использовать pattern.findall
, потому что у вас будет более одного соответствия (я сократил список строк, но на самом деле около 20 тысяч строк), и мне нужно найти самый короткий (так как это будет самый короткий путь для ИИ выиграть).
Есть ли способ сопоставить всю строку (или просто последние числа после тех, которые я предоставил)?
Заранее благодарен!
1) Я не знаю, сколько значений может быть 2) У него будет более 20 тысяч строк, что будет очень утомительным/предполагающим больше времени и ресурсов, чем использование регулярных выражений. –