2013-05-07 3 views
-1

나는 다음과 일치하는 정규식이 필요 사이의 모든 단어를 찾을
일치 "안녕하세요는 #party 시간 #입니다 #world": "세계" 및 "파티 시간"정규 표현식, 두 개의 구분 기호

정규식으로 놀면서 나는 둘 중 하나만 일치시킬 수 있지만 둘 다 결코 일치시킬 수는 없습니다. 이것은 가능한가?

+2

어떤 프로그래밍 언어를 사용할 수 있습니까? '세계'는 구획 문자로 둘러싸여 있지 않습니다 ... –

+0

당신의 시도는 무엇입니까? 또한 문자열에서'# world # '을 의미 했습니까? – ajp15243

+0

사용하는 언어는 PHP입니다. 우리가 편집 가능한 div를 사용하지 않기 때문에 태그를 공백과 일치시키기위한 임시 해결책으로 여분의 #을 사용합니다. 첫 번째 것과 일치하는 것은 쉽습니다. 이것은 내가 공백이있는 것에 대해 가지고있는 것입니다. http://regex101.com/r/jQ6cN6 –

답변

1

지금 해결할 수있는 방법은 없습니다. #을 "스톱 갭"으로 사용하는 대신 모호한 점이 있습니다. 문제는 공간입니다 .it는 값에 따라 유효한 문자와 유효하지 않은 문자이며 둘 중 어느 것이 어떤 것인지를 알 수있는 방법이 없습니다.

여러 정규식으로 나눌 수 없습니다. #([^#]+)과 같이 처음 시도하면 #world#party이 일치합니다. 처음에 #([^#]+)#을 시도하면 world it is과 일치합니다. 당신이 혼합 #((?:(?<!\b).)+)#에 부정적인 lookbehind을 던져하더라도 당신은 당신이 중 하나를

  1. 는 # 폐쇄 구분 기호를 넣어해야, world it is #party time

    이에 대한 해결하기 위해 일치합니다 (당신이 전화로 "격차를 중지") 의 말에 모두 구, 심지어 단일 단어. 그런 다음 #([^#]+)#

  2. 문구의 공백을 다른 문자 (예 : 밑줄)로 바꿀 수 있습니다. 그런 다음 #([^\b]+)을 수행 할 수 있습니다 (이 내용은 공간을 바꿀 내용에 따라 다를 수 있습니다).
관련 문제