내 정규 표현식과 일치하는 시퀀스가 공백으로 묶인 문자열의 중간에 있거나 끝나거나 처음에 있거나 문자열에서 유일한 것이어야하는 시퀀스를 찾고 싶습니다.Perl 정규 표현식을 사용하여 문자열의 끝이나 시작 부분에서 공백으로 단어를 일치시키는 방법은 무엇입니까?
예 : 시퀀스 'qwe45rty'
이 우리가 찾고있는 것으로 가정 해 보겠습니다. 나는이 모든 문자열에 긍정적 얻을 수 있기를 원하는 :
'qwe45rty'
'qwe45rty blabla'
'smth qwe45rty blabla'
'smth qwe45rty'
' qwe45rty '
그러나이 중 어느 것도 :
'aaqwe45rty'
'qwe45rtybb'
'aaqwe45rtybb'
이 내가 생각 해낸없는 최저 이 같은 smth :
if (($a =~ /\s+$re\s+/) or
($a =~ /^$re\s+/) or
($a =~ /\s+$re$/) or
($a =~ /^$re$/) )
{
# do stuff
}
그럴 수있는 가장 좋은 방법이 될 수 없습니다 :)
어떤 제안이 있습니까? 예를 들어
$a =~ /(?:\A|\s)$re(?:\s|\Z)/;
:
정규식 내부에서'또는'에 대해 알고 있지만, 문자열 앵커'^'와'$'는 그런 식으로 사용할 수 없다고 생각했습니다. – bazzilic
@bazzilic 그런 식으로 아무 문제없이 앵커를 사용했습니다. 유일한 문제는 일치 목적으로 괄호를 사용하는 경우 괄호가 개수에 더해지는 것입니다. '(? :^| \ s +)'를 사용하여이 문제를 해결할 수 있습니다. –
당신의 해결책을 골랐어 요, 문자열 앵커가 Perl 정규 표현식의 다른 제어 시퀀스로 사용될 수 있다는 것을 지적 해 주셔서 감사합니다! – bazzilic