정규식을 사용하여 텍스트 단락의 특정 줄에서 일련의 숫자를 캡처하려고합니다. 아래의 단순화 된 예에서는 "활성 전화 회선"섹션에서 4 자리 숫자를 캡처하려고합니다. 나는 활성 전화 라인의 알 수없는 숫자가 있으리라 믿고있어, 그리고 숫자는 스스로를 반복 할 수 없습니다 :Regex (Back Reference?)로 이전에 캡처 한 그룹 일치
User Names: bob, jill, toni, tom
Active Phone Lines: 1010, 2020, 3030, 4040, 5050, 6060, 7070
Inactive Phone Lines: 1111, 2222, 3333, 4444, 5555
내가 캐리지 리턴/줄 바꿈하여 문자열을 분할하고 단지 ([0-9]{4})
의 정규 표현식을 사용할 수 있다는 것을 알고 ,하지만 호기심이 생기고 하나의 정규 표현식을 사용할 수 있는지 알고 싶습니다.
(?<=Active Phone Lines: |,)([0-9]{4})(?=, |\rInactive Phone Lines:)
을하지만 이것은 2222, 3333, 그리고 "비활성 전화 라인"의 4444 캡처합니다. 이전 참조 된 그룹을 참조하기 위해 참조를 사용할 수는 있지만 이전 캡처를 캡처 한 순서가 아닌 참조 된 참조 만 사용할 수 있음을 알 수 있습니다. 같은 수식 내에서만 작동하며 검색을 여러 번 반복하는 것은 아닙니다.
이전에 캡처 한 그룹을 역 참조 할 수있는 방법이 있습니까?
(?<=Active Phone Lines: |$foo,)([0-9]{4})(?=$foo, |\rInactive Phone Lines:)
Euhm is this java or php? 또한 나는 당신이 원하는 것을 이해하지 못합니다. PHP에서는 다음과 같은 것을 사용할 수 있습니다 ['(test) (this) (? 2) (? 1)'] (http://regex101.com/r/hN3xN7). 이것은'testthisthistest'와 일치합니다 – HamZa
이것은 자바에서 사용될 것입니다. "Active Phone Lines :"문자열 뒤에 "Inactive Phone Lines :"문자열 앞에 나타나는 각 4 자리 숫자를 캡처하는 것이 목표입니다. 문제는 "활성 전화 회선 :"다음에 나타날 수있는 4 자리 숫자가 알려지지 않은 숫자입니다. – dfreer