В python я пытаюсь реализовать определяемое пользователем выражение регулярного выражения путем разбора его на пользовательское выражение регулярного выражения. это пользовательское выражение регулярного выражения затем применяется к строке, отделяемой пробелом. Идея заключается в применении пользовательского регулярного выражения на второй столбец без использования цикла for.Python, применяя regex negative lookahead recursivly
Stream //streams/sys_util mainline none 'sys_util'
Stream //streams/gta mainline none 'gta'
Stream //streams/gta_client development //streams/gta_cdevelop 'gta_client'
Stream //streams/gta_develop development //streams/gta 'gta_develop'
Stream //streams/gta_infrastructure development //streams/gta 'gta_infrastructure'
Stream //streams/gta_server development //streams/gta_cdevelop 'gta_server'
Stream //streams/0222_ImplAlig1.0 task none '0222_ImplAlig1.0'
Stream //streams/0377_kzo_the_wart task //streams/applications_int '0377_tta'
Ожидаемый результат должен быть
//streams/gta
//streams/gta_client
//streams/gta_develop
//streams/gta_infrastructure
//streams/gta_server
вот мой код,
import re
mystring = "..."
match_rgx = r'Stream\s(\/\/streams\/gta.*)(?!\s)'
result = re.findall(match_rgx, mystring, re.M)
Примечание: Выражение внутри первой скобкой не может быть изменен (как он обрабатывается с пользователем ввод), поэтому \/\/streams\/gta.*
должен оставаться таким, какой он есть.
Как я могу улучшить негативный внешний вид, чтобы получить желаемые результаты?
Вы тестируете другой вход, верно? Ваш шаблон содержит 'tda_cl', который отсутствует на вашем входе. Кажется, вам нужен 'r'Stream \ s + (// streams/gta (?: _ \ W +)?) '' –
Может быть, 'Stream \ s (// streams/gta. *?) (? = \ S | $) '(или' Stream \ s (// streams/gta. *?) (?! \ S) ') будет делать? Было бы лучше, если бы вы могли показать реальный, а не упрощенный код, который у вас есть. –
извините, это была опечатка. match_rgx обязательно должен указывать gta. *, поскольку он исходит от пользователя.Я хочу применить определенное пользователем регулярное выражение только во второй coloumn. надеюсь это поможет. – Sha