2014-01-12 2 views
0

정규식 일치 및 바꾸기를 사용하여 일부 파일의 이름을 바꾸려면 RegexRenamer를 사용하고 있습니다.패턴 검색 및 정규 표현식 패턴

불행히도,이 튜토리얼은 내가하고 싶은 것에 가까운 것을 커버하지 못했고, 정규 표현식의 작동 방식을 이해하는데 너무 뛰어났습니다. 기본적으로 다음 파일을 일부 패턴의 이름으로 바꾸는 것이 좋습니다.

아티스트, 이름 - - 노래 이름은

잭슨, 마이클 우리는

최종 결과가 있어야합니다 세계입니다

마이클 잭슨 - 우리는 세계입니다.

피처링 곡에 대해서는이 규칙에 대한 몇 가지 예외가 있지만 첫 번째 예에 대한 코드는 반드시 인터넷 검색 후 하루를 마감 할 것입니다.

예외 :

잭슨, 마이클 & 에이콘 (Akon) - 내 손

마이클 잭슨 & 에이콘 (Akon)을해야 홀드 - 내 손 잡아

+0

는 적어도 튜토리얼은 당신에게 그룹 및 역 참조를 캡처에 대해 뭔가를 얘기해야합니까? 정규식과 일치하는 텍스트를 캡처하여 대체 텍스트에서 참조 할 수 있습니다. – nhahtdh

답변

0

정규식 : 치환술

(\w+),\s+(\w+) 

: 다수 발생을

$2 $1 

Live demo #1

:

(?:(\w+),\s+(\w+))+ 

Live demo #2

노래 이름도 거기에 ,을 쉼표가있을 수 있다면, 이것을 사용 :

(\w+),\s+(\w+)(?=.*?-) 
+0

더 짧고 좋습니다. – valiD

+0

@ValentinDragan 또한 충돌을 피하기 위해 다른 정규식을 추가했습니다 – revo

+0

'Jackson, Michael Andrew'와 같은 두 개의 이름이있는 경우이 작업은 작동하지 않습니다. – brandonscript

0

정규식 당신이 새로운 특히 어렵다. 일부 정규식 문자가 필요

Find: "([a-zA-Z]+), ([a-zA-Z]+)([a-zA-Z& ]*) \\- ([a-zA-Z ]+)\n" 
     /\ group 1. /\ group 2. /\ 3.    /\ 4 
Replace: "$2 $1 $3 - $4" 

참고가 이스케이프, 그리고 당신이 대부분의 프로그래밍 언어로 할 것 같은 이중 백 슬래시로 탈출 : 이것 좀보십시오. 만약 당신이 오직 하나의 백 슬래쉬 만 필요로한다면, 하나의 백 슬래쉬를 사용하라.하지만 당신은 \ n을 개행 이스케이프가 무엇이든 대체해야한다.

기본적으로 이는 $ 1 및 $ 2로 그룹화 된 두 개의 쉼표로 구분 된 알파벳 단어와 일치합니다. [a-zA-Z]+은 하나 이상의 알파벳 문자와 일치한다는 의미입니다. 괄호는 일치하는 항목을 캡처하여 나중에 대체 할 수 있도록합니다. 이 이름들을 서로 바꿉니다. 그런 다음 $ 3에있는 대시 (dash) 앞에 여분의 내용을 캡처하고 추가합니다. 이는 & 문자와 공백을 포함하고 1 대신에 +가 있기 때문에 그룹 1과 2와 같으며 0 개 이상의 문자와 일치합니다. (여분의 부분이있을 수도 있고 없을 수도 있습니다). 마지막으로 $ 4에 노래 이름을 붙잡고 추가합니다. 나는 모든 노래 이름이 알파벳 문자와 공백만을 포함한다고 생각했다. 노래 이름에 다른 이름이 들어있는 경우이를 추가해야합니다.

면책 조항 :이 정규식은 테스트되지 않았으며 버그가있을 수 있습니다.