2013-03-28 3 views
2

내가 this regex을 사용할 수 있습니다 저장합니다. 유효하지 않은 문자 (또는 그 연속)를 밑줄 "_"와 같은 표준 문자로 자동 바꾸어 사용자에게 추가 서비스를 추가하고 싶습니다.교체 잘못된 문자 이전

with getRGX() 
    .ignoreCase = TRUE 
    .global = TRUE 
    .pattern = <inputPattern> 
    <outputCleanfileName> = .Replace(<inputDirtyFileName>, < "_" >) 
end with 

내가 관리했습니다 최선의 지금까지 가지고 올 :

그러므로, 나는 내 지식 VBScript를 만 패턴이 일치하는 경우 대체 방법을 제공하기 때문에, 다른 패턴을 마련 할 필요가 다음은 :

((PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?)?[\\?*:\"";|/]+ 

를 불행하게도, 그것은 확장을 놨 :

INPUT = COM1:aAZB?":a|a|a/.txt? 
MATCH = COM1:?"||/.txt? 
EXPECTED = COM1:?"||/? 

내가 명백한 것을 빠뜨린다면 사전에 사과 드리며 제공되는 도움에 감사드립니다.

+0

올바른 거꾸로 reged 찾을 때까지 내가 뭔가 간단하게 갈 수있을 것 같아요. 이 같은 뭔가가 지금 내 요구에 맞게 것 : http://stackoverflow.com/questions/3885964/regex-to-replace-invalid-characters 사람이 적절한 "거꾸로"정규식 있었다면, 수취인이 되십시오. 다시 한 번 감사드립니다. – Madscripter

+0

나는이 질문을 오해하고 있을지 모른다. 각각의 유효하지 않은 문자를 개별적으로 선택하려고합니까 아니면 유효하지 않은 전체 파일 이름을 선택하려고합니까? 내 대답은 후자를 해결합니다. –

+0

먼저이 문제를 조사해 주셔서 감사합니다. 방금 당신의 제안을 보았습니다. 그리고 그것은 제가 오해했다고 생각합니다. 아마도 초기 질문을 편집해야하지만 패턴에 의해 유효하지 않은 문자 (또는 문자 그룹)를 유효한 문자 (또는 문자 그룹)로 남겨두고 무언가를 유효하게 바꾸고 싶습니다. 그들은 일치하지 않습니다. 바라건대, 이것은 혼란을 없앴습니다. 위의 예제에서 예상되는 일치 항목은 다음과 같아야합니다. COM1 :? "|| /? – Madscripter

답변

1

나는이 정규식은 당신이 원하는 것을 생각 : 그것은 Debuggex 작동 방식을 볼 수

(?:^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(?:\.(?=.)|$)|(?:([\x00-\x1f\\?*:\"";|/]))) 

. 아이디어는 거부하는 정규 표현식의 각 부분을 "반전"시키는 것입니다.

+0

Perfect. 나는 "거부 정규식"아이디어의 각 부분을 반전했지만 여전히 그것의 일부를 놓쳤습니다. 다시 감사합니다. 답변 제공됨. – Madscripter