저는 정규식을 매우 새로 도입했습니다. 나는 약 3 시간 전에 그것을 집어 들었지만, 나는 걸쇠를 치고, 나는 그것을 흔들 수있는 것처럼 보일 수 없다. 그래서 늘 그렇듯이 모든 문제를 해결하기 위해 인터넷으로 눈을 돌 렸습니다. 그리고 나에게 해답을 설명 할 수 없을 때 stackoverflow를 검색하여 다른 사람이 내 질문에 답변했는지 확인한 다음 마지막 질문을 게시했습니다. 나는 브라우징에서 스스로 대답 할 수 없었다.Python에서 Regex를 사용하여 배열 크기를 얻으십시오.
내가 거의 알아 내지 못했기 때문에 나는 조금 어리석은 짓을 할 것이다. 그러나이 작은 꼬마 한 비트는 내가 원하는대로 작동하지 않는다. 실제로, 그리고 전체 엉망이 복잡하고 설명하기가 어렵지만, 결국, 나는 정규식을 실행하려는 문자열의 전체 무리가 있습니다.
그래서 반복 루프 측면에서 변수 이름이 포함 된 문자열을 전달합니다. 이제 변수가 어떻게 생겼는지 설명하는 데 어려움을 겪고 있습니다. 따라서 예제를 나열하고 파이프를 따라 가면서 추출 할 내용을 살펴 보겠습니다.
Variable | (Variable)
Variable.list[3]name | (Variable.list[3]name)
Var.list[5] | (Var.list , 5)
Var.list_name[3]thing_words[4][3][2] | (Var.list_name[3]thing_words , 4 , 3 , 2)
Var[3] | (Var , 3)
Var.word | (Var.word)
등등. 나는 그것이 명백하게한다라고 생각한다, 그렇지? 대괄호를 포함하거나 포함하지 않는 변수 이름이 필요하며, 대괄호가 있으면 이름에서 제외하고 match.groups()에서 액세스 할 수 있도록 캡처하고 싶습니다. 나는 내부에 숫자가없는 ... []로 끝나는 이름의 변수가 있다고 생각하지 않는다. 그러나있을 수도 있고,있을 수도있다. 나는 그것들을 무시하기를 원한다. 그것은 작동하지 않습니다 ...
for line in list:
regex = re.compile("^[-\w\[\]\.]+(\[(0-9)*]\])*$")
match = regex.match(line)
if match:
do something that depends on len(match.groups())
그러나 :
은 지금은 그런 짓을하려합니다. 정규식은 필자가 생각할 때조차도 결코 일치하지 않는다.내 마음 속에서 나는 아주 분명합니다! 나는 그것들을 여러개의 물건으로 시작해서 잠재적으로 많은 수의 대괄호로 끝내기를 원한다. 그리고 대괄호로 묶은 숫자로 끝나면 그것을 잡아서 저장한다. 그러나 문자열의 끝 부분에없는 괄호로 묶은 숫자는 무시한다.
그래서 ... 내가 이제 내가 조금씩 중복되는 점에 대해 설명했다. 원하는대로 작동하도록하려면 어떻게해야합니까? 내가 그것을하려는 방식으로도 끝날 수 있습니까?
while (match.endswith("]")
match.strip("]")
func()
match.strip("[")
FUNC()는 정규식 최종 오프 수를 제거하기 않습니다 : 내가 대신 더 그런 짓을해야 하는가? 그것은 지나치게 복잡하고 매우 혼란스럽게 보입니다. 내 직감 정규 표현식 그것을 처리 할 수있는, 그리고 내 초보자 눈을 그냥 어떻게 볼 수 없다고 말해줍니다.
무엇이 필요합니까? 최선의 해결책은 다른 곳의 변화를 포함 할 수 있습니다. – user2357112
정규 표현식 대신 파서를 사용하는 좋은 사례 인 것처럼 보입니다. 입력 예제는 EBNF 문법에서 멀지 않습니다. –
아, 그게 무슨 뜻인지 말할 수는 없어, 불행히도, 나는 내가 통과되는 것을 바꿀 수 없다. 죄송 해요. 파서 ... 나는 그것에 대해 읽을 것이지만, 당신은 열중 할 수 있습니까? 파이썬에 대해서도 몇 주 밖에 걸리지 않습니다. – CamelopardalisRex