2014-07-14 3 views
3

죄송합니다, 먼저 정규 표현식에 좋지 않지만 누구나 나를 도울 수 있습니까? 01.exe밑줄 (_) 사이의 숫자를 찾는 방법?

파일 이름 - - 001.exe

파일 이름 - 내가 가지고있는 0001.exe

Filename_01_.exe

파일 이름 : 난라는 이름의 파일이 이 정규식과 함께 시도했습니다.

(?=.*?)\d{1,4}\b 

하지만 Filename_01_.exe와 함께 작동하지 않는 Filename - 01.exe, Filename - 001.exe 및 Filename - 0001.exe에서 01, 001, 0001 번호를 감지합니다. 정규식이 잘못되었거나 대체 정규식 또는 메소드가 있습니까? ?

죄송합니다. 영어가 적절하지 않은 경우 죄송합니다.

+3

참고 : \의 d'와 "숫자"'차이가있다; '\ d'는 숫자를 나타내는 넓은 범위의 유니 코드 문자와 실제로 일치합니다; 실제로 * [* 0] 대신 실제로 [0-9]를 의미 할 수도 있습니다. –

답변

1

01Trailer ep 01 720p.mp4 예에서, 다음 단어를 사용하려는 경우 경계,

\b[0-9]+\b 

\b 단어 문자 및 비 단어 문자.

그리고 아래 정규식은 단어 경계 사이에있는 숫자 또는 _ 기호와 일치합니다.

(?:_|\b)\K[0-9]+(?=_|\b) 

DEMO

+0

작동했지만 예고편으로 작동하지 않습니다. ep_01_720p.mp4 – deanrihpee

+0

@drihPEE 참조 http://regex101.com/r/dP1eW6/3 –

+0

감사합니다. 도움이됩니다. – deanrihpee

2

파일에 하나 개의 숫자가 존재하기 때문에 방법 단순히이 사용에 대한 : C#에서

\d+ 

:

var myRegex = new Regex(@"\d+"); 
string resultString = myRegex.Match(yourString).Value; 
Console.WriteLine(resultString); 
+0

그러나 파일 이름에 2 개 이상의 숫자가있는 경우 어떻게됩니까? 예 예고편 ep 01 720p.mp4 ... 만약 내가 720을 사용하지 않고 단지 01을 얻고 싶다면, 단지 \ d +를 사용하면 두 개의 숫자를 모두 얻을 수 있지만 실제로는 첫 번째 숫자가 발견되지만 720p와 01이 바뀌면 어떻게 될까? ? – deanrihpee

관련 문제