자바는 기본적으로 사용할 수있는 것을 의미한다 (비 고정 길이 모양 비하인드을 지원하는 유일한 언어 중 하나입니다 수량계)를 사용하므로 기술적으로 다음을 사용할 수 있습니다.
(?<=^\w+)(-\w+)
위 항목을 캡처하지 않고 -test
과 일치합니다. 그러나 일반적으로 고정 길이가 아닌 룩백은 완벽하지 않으며 효율성도 뛰어나지 않으며 다른 언어에서도 사용할 수 없으므로 일반적으로 권장되지 않습니다. 말하자면 .. 이것은 단순한 패턴이므로, 당신이 이식성에 대해 신경 쓰지 않는다면, 그것으로 가십시오.
^\w+(-\w+)
추신 :
은 더 나은 솔루션은하지만 캡처하고 캡처 한 그룹을 참조 할 것 그룹에 (이 경우, 그룹 1)입니다 - \w
은 점과 일치하지 않으므로이를 미리 볼 필요가 없습니다.
p.p.s. - 원래 패턴 ^(?=\w+)(-\w+)(?!\.)
이 일치하지 않는 이유에 대한 질문에 대답하십시오. 이유는 다음과 같습니다.
1) 문자열 어설 션의 시작 부분부터 시작하여 다음 단어가 하나 이상의 단어 문자인지 확인하기 위해 미리보기를 사용하십시오. 그러나 lookaheads는 제로 너비 어설 션으로, 일치하는 문자가 실제로 사용되지 않으므로 포인터가 일치 한 후에 다음 문자로 넘어 가지 않습니다. 따라서 "www"가 패턴과 일치하고 패턴의 다음 부분으로 이동하지만 실제 포인터는 문자열의 시작 부분을지나 가지 않았습니다. 그러면 다음에 (-\w+)
부분과 일치하게됩니다. 음, 문자열이 "-"로 시작하지 않아 패턴이 실패합니다.
2) (?!\.)
은 부정적 예측입니다.여러분의 예제 문자열은 "테스트"부분 다음에 점을 표시합니다. 그래서 # 1이 실패하지 않더라도 실패 할 것입니다.
실제 공백에 공백이 있습니까? 미리보기가 어떻게 작동하는지 알고 있습니까? 어떤 언어/도구를 사용하고 있습니까? –
죄송합니다. 지금 삭제하십시오. 왜 downvote? – genonymous
'www'가 임의의 문자열이 될 수 있다면, 일치해야 할 텍스트의 요구 사항이 무엇인지는 모르겠지만 일치해야합니다. – funkwurm