2013-10-02 4 views
0

나는 각 요소는 따옴표로 둘러싸여있는 쉼표로 구분 된 목록을 얻으려고하지 않고 행을 일치,하지만 난 아무 쉼표가 없습니다 마지막 줄을 캡처 할 수 없습니다쉼표 또는 쉼표

var input_value = 

'test, 
test, 
test' 

input_value.replace(/(.*?),/gm, "\"$1\", ") //=> "test", 
               "test", 
               "test", 
                test 

어떻게 나는 그 마지막 줄을 잡고 그 주위에 따옴표를 붙인다?

/(.*?,)|(.*?)/gm| 연산자는 모든 문자와 주변을 마지막 줄의 따옴표로 분리합니다. 나는 그것을 어떻게 오용하고 있는가?

답변

2

는 다음과 같은 시도 : 당신이 정말하지

input_value.replace(/(.+?)(,|$)/g, "\"$1\"$2 ") 
          ^^^^^ 
       Match a comma , or the end-of-string $ 

공지 사항 대신 (.*+)(.+?) 문자열의 끝에 빈 문자열을 일치하는 정규 표현식을 방지 사용하여 m 수정이 필요합니다.

편집 : 아래의 데모 예를 업데이트 했으므로 확인해보십시오. (.+?)(.*?)과 다른 점을 확인하려면 데모에서 정규 표현식을 편집하고 어떻게되는지 확인하십시오. 왜 이런 일이 발생하는지 추론 할 수없는 경우 알려 주시면 자세히 설명 드리겠습니다.

Regex101 Demo

+1

나는 당신이 가깝다고 생각하지만, 대체 문자열은 "\"$ 1 \ "$ 2"이어야 최종 항목에 쉼표를 넣지 않아야합니다. 나는 그것을 시도하지 않았다, 단지 생각. – MacAnthony

+0

@MacAnthony 당신 말이 맞아요. 내가 필요로하는 몇 가지 개조가 있지만, OP 편집자의 피드백을 기다리고 있습니다. –

+0

아주 잘 작동합니다. 따옴표로 묶은 각 값 사이에 줄 바꿈이 있음을 알 수 있습니다. 왜 이런거야? 또한'. *'과'. *'가 어떻게 다른지 보여주는 또 다른 예가 있습니까? 정말 고맙습니다. – 1252748

0

이 다른 접근 방식이지만,이 작동 할 수 있습니다

input_value.replace(/\b[^,]+/g, "\"$1\"); 

이 비록 데이터 구조에 따라 달라집니다. 각 줄에 쉼표가 오는 단어가 하나뿐이라면 제대로 작동합니다.

+0

일치하는 값이 예제에서와 같이 단어 문자로 시작하는 경우에만 작동합니다. 그러나 OP는 실제 가치가 어떻게 생겼는지에 대해 말하지 않았다. 내가 너라면 나 한테 판결을 내릴거야. –

+0

@ AlanMoore - 그 이유는이 솔루션이 데이터 구조에 달려 있다고 말했기 때문입니다. – MacAnthony