2017-03-07 4 views
0

하이픈 앞뒤에 오는 두 그룹의 문자열을 일치 시키려합니다. 그러나 경우에 따라 하이픈이 누락 될 수도 있습니다. 그래서 내가 원하는 것은 :Regex Match Groups with "-"

에 "Hello World -이이 테스트"그룹 (1) = 안녕하세요 월드 그룹 (2) =이 테스트

에 "Hello World"입니다 : 그룹 (1) = Hello World, 그룹 (2) 누락되었습니다.

다음 정규 표현식의 변형을 시도했지만 원하는대로 작동하지 않습니다. 임의로
일치 ([^-]+?)\s*(?:-\s*(.+))?

(.*?)(\-.*) 

답변

1

(가) 정규식 다음이 그것을 어떻게해야이 ...

([\w\s]+)(?:[\s-]?)(.*?)(?:\n|$) 

regex demo/explanation

+0

위대한 참조하십시오. "$"를 추가하는 것이 왜 효과가 있는지 설명 할 수 있습니까? $ 의미는 이해하지만 이해하지 못하는 이유는 끝에 "$"를 붙이면 전체 문자열이 그룹 1과 일치하게됩니다. – Yang

+0

@Yang'$'은 줄 바꿈 (줄 끝)과 일치하여 결과를 제거합니다. 그룹 1의 전체 스팅과 일치합니다. – m87

2

뭔가 제 2 그룹은 하이픈으로 시작했다.

([^-]+?)     # (1) 
\s* 
(?: 
     - \s* 
     (.+)      # (2) 
)?