다음 형식의 문자열에 정규식을 작성하려고합니다.
12740 (34,12) [abc (a1b2c3) (a2b3c4) ......] myId123
현재는 이런 게 있어요
\((?P<expression>\S+)\)
그러나 이것으로 대괄호 안에있는 문자열 만 캡처 할 수 있습니다.
어쨌든 대괄호 앞의 정수와 대괄호 안의 문자열과 함께 끝에있는 ID를 캡처 할 수 있습니까?
작은 대괄호로 묶인 문자열의 수는 동일하지 않습니다. 나는 또한 다음과 같은 문자열을 가질 수 있습니다
10 (3,2) [abc (a1b2c3)] myId1
무차별 대입을 사용하여 위의 표현에 대한 간단한 정규식을 작성할 수 있다는 것을 알고 있습니다. 그러나 대괄호 안의 문자열 수가 계속 변경되면 누구든지 저에게 도움을 줄 수 있습니까?
미리 감사드립니다
당신은 사용하여 정보를 캡처 할 수 ^
및 $
시작 각각 종료 의미한다 :
((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)
Regex101 :
https://regex101.com/r/PoA5k4/1
결과를 더 유용하게 만들기 위해 사전으로 변환합니다.
import re
myStr = "12740(34,12) [abc (a1b2c3) (a2b3c4)......] myId123"
di = {}
for find in re.findall("((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)",myStr):
if find[1] != "":
di["starter"] = find[1]
elif find[3] != "":
di["id"] = find[3]
else:
di.setdefault("expression",[]).append(find[2])
print(di)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다