0

문장 내에 특정 단어 집합을 찾을 수있는 정규 표현식을 만드는 데 도움이 필요합니다. 특정 단어 또는 단어 집합은 문장을 검색하기 전에 알려집니다. 이 단어들은 항상 문장 내에 존재합니다. 시간이 갈수록 세트가 확장됩니다. 아래의 예를 들면, 단어의문장의 특정 단어 집합에 대한 정규 표현식

설정 : "오고" "집의 ", "시간", ""

문장, " 어떻게 이는"그 경기 반환해야합니다 :

1) "나는 집을오고"-에 대한> 일치를 "집의 "

2) "나는 아기로 사용되는 시간 기억"->에 대한 일치 "시간이는"

3) "글쎄, 난 당신이 무슨 짓을했는지 확실하지 않다, 그러나 이 입니다 내 문제를 해결하는 방법? "->에 대한 일치"이 얼마나 "

4)"당신이 오는 때 " -> ""에 대한 일치

UPDATE : 구현의 언어는 PHP에있을 것입니다

+2

집의 간단한 조합' "| 팀 전자 |이게 다가오는 가정이 어떻게 돌아가는지, 문제가 뭐니? – dasblinkenlight

+0

맛/도구는 무엇입니까? – acdcjunior

+0

@acdcjunior 아마 PHP, 즉 PCRE ('preg-match' 태그로 인해) –

답변

2

설명

당신의 문구와 일치, 그들은을 보장이 표현은 다른 내부에 포함되지 않은

큰 단어.

enter image description here

PHP 코드 예

^.*?(?:\s|^)(of\sthe\shouse|time|this\sis\show|home)(?=\W|$).*

: 당신은 너무 난 그냥이 PHP 예제를 제공하고있어 언어를 지정하지 않은

은 단순히 이것이 어떻게 작동하는지 표시합니다.

샘플 텍스트

1) "I was coming out of the house" 
2) "I remember the time when I used to be a baby" 
3) "Well, I am not sure what you did, but this is how I fix my problems" 
4) "When are you coming home?" 
5) "This is howard Timey said of the houseboat" 
6) "The last word in this line is home 

코드

<?php 
$sourcestring="your source string"; 
preg_match_all('/^.*?(?:\s|^)(of\sthe\shouse|time|this\sis\show|home)(?=\W|$).*/imx',$sourcestring,$matches); 
echo "<pre>".print_r($matches,true); 
?> 

일치

[0] => Array 
    (
     [0] => 1) "I was coming out of the house" 
     [1] => 2) "I remember the time when I used to be a baby" 
     [2] => 3) "Well, I am not sure what you did, but this is how I fix my problems" 
     [3] => 4) "When are you coming home?" 
     [4] => 6) "The last word in this line is home 
    ) 

[1] => Array 
    (
     [0] => of the house 
     [1] => time 
     [2] => this is how 
     [3] => home 
     [4] => home 
    ) 
+1

'[\ W \ s \ r \ n]'은'\ W'와 동일합니다. 또한 문자열이 키워드로 끝나는 경우에는 작동하지 않습니다. (lookahead에는 문자가 필요하기 때문에) 양쪽 끝에서 단어 경계를 사용합니다. –

+0

좋은 콜, 표현식과 샘플 텍스트를 업데이트했습니다. –

+0

이제'(? = \ W | $)'는 주어진 경우'\ b'와 완전히 동일합니다 (효율성은 떨어지더라도). 적어도 지금은 작동합니다. +1 –

관련 문제