RegEx-가변 길이의 숫자 일치


131

전체적으로 참조 번호가 흩어져있는 문서를 구문 분석하려고합니다.

텍스트 텍스트 텍스트 {4 : 2} 더 놀라운 텍스트 {4 : 3}는 훨씬 나중에 {222 : 115}에 더 많은 텍스트가 추가됩니다.

참조는 항상 대괄호로 묶이고 둘 사이에는 항상 콜론이 있습니다. 나는 그들을 찾기 위해 표현을 썼다.

{[0-9]:[0-9]}

그러나 이것은 두 세 자리 숫자를 만나는 순간 분명히 실패하고 그것이 무엇인지 파악하는 데 어려움을 겪고 있습니다. 처리 할 수있는 최대 크기는 {999 : 999}입니다.

누구든지 이것을 처리하는 적절한 표현에 대한 아이디어가 있습니까?


8
OP가 상관하지 않더라도 궁금합니다. 왜이 질문에 대해 반대 투표를하나요? 나는 그것에 대해 잘못된 것을 보지 않는다.
John

3
@John : 어떤 이유로 사람들은 특히 regex태그 에서 쉬운 답변이있는 질문에 반대표를 던지는 것을 좋아합니다 .
CanSpice 2011-09-13

1
결국이 질문은 Google에서 더 높은 순위를 얻었고이 질문에서 내 대답을 찾았습니다.
Jasonfish

답변:


134
{[0-9]+:[0-9]+}

플러스를 추가해보십시오.


찾는 데 너무 오래 걸렸습니다 ...이 정보에 감사드립니다!
level42

76

어떤 정규식 엔진을 사용하고 있습니까? 대부분은 다음 표현을 지원합니다.

\{\d+:\d+\}

\d실제로 속기입니다 [0-9],하지만 중요한 부분의 추가 인 +하는 수단 "하나 이상의".


31

이 시도:

{[0-9]{1,3}:[0-9]{1,3}}

{1,3}수단 "앞의 문자 1 ~ 3 일치".


8

을 사용하여 이전 항목과 일치시킬 횟수를 지정할 수 있습니다 {min,max}.

{[0-9]{1,3}:[0-9]{1,3}}

또한 대부분의 정규식 버전 \d대신 숫자에 사용할 수 있습니다 [0-9].

{\d{1,3}:\d{1,3}}

또한 외부 탈출 고려할 수 있습니다 {}단지 그들이 반복 정의의 일부가 아닌 것이 분명하게.


2
유럽이 아닌 숫자를 좋아하지 않는 한 대부분의 정규식 버전
으로는

1

{\ d * : \ d *}가 작동합니다.

*는 숫자 인 0 개 이상의 선행 항목과 일치 함을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.