2009-06-10 14 views
0

이 일반 표현식이 마지막 문자로 밑줄이있는 문자열을 반환 할 수 있습니까?정규식이 예상대로 작동하지 않습니다.

대문자와 소문자가 혼합 된 문자열 만 반환해야합니다. \ S는 당신이 것을 할 수 있다는 것을 의미하는 경우 그룹은, 그러나 밑줄을, 그래서는 안

"하지 공백 문자", \ S 일치 _을 의미하기 때문에

However, the regular expression returns: 'action_'

$regEx = '/^([a-zA-Z])[a-zA-Z]*[\S]$|^([a-zA-Z])*[\S]$|^[a-zA-Z]*[\S]$/'; 
+1

표현식으로 무엇을 달성하려고합니까? –

+0

대괄호 안에 \ S가 나타나는 이유는 무엇입니까? 두 문자 ("\"와 "S")를 포함하는 문자 클래스를 정의하지 않습니까? – Benson

+3

이것은 이상한 RE입니다. 3 가지 대안이 있고 2 번째 및 3 번째 대안은 정확히 동일하므로 3 번째 대안은 결코 일치하지 않을 수 있습니다. 왜냐하면 가능한 경우 2 번째 대안이 이미 일치했을 것이기 때문입니다. 또한 두 번째 대안은 ([a-zA-Z]) * 부분이 전혀 일치하지 않는 경우에만 일치합니다. 그렇지 않으면 첫 번째 대안이 일치합니다. –

답변

2

[\S]은 밑줄을 포함, 공백없는 모든 일치합니다.


또한 표현이 매우 이상합니다.

문자 만 포함 된 문자열을 원할 경우 ^[a-zA-Z]*$ 또는 ^[a-zA-Z]+$ (공백이 허용되는지 여부에 따라 다름)을 사용하십시오.

다른 작업을 수행하려는 경우 해당 작업을 확장해야합니다.

+1

/s 소문자는 공백을 의미합니다. – Brabster

+0

거의. \ s 소문자는 공백을 의미합니다. 슬래시 방향을주의하십시오. –

+0

죄송합니다! 재미있는 모바일 키보드 레이아웃! – Brabster

5

당신은 첫 번째 그룹뿐만 아니라 전체 경기를 되찾고 있습니다.

필요하면 정규식을 사용하여이를 명확히 설명하십시오.

0

\ S는 공백이 아닌 문자와 일치 - 따라서 _

0

텍스트와 추출 할 부분을 표시해야합니다. 정규 표현식이 너처럼 크지 않아야합니다.

작은 크기의 일괄 처리 작업 ...이 크기에서는 도움이 매우 어렵습니다.

관련 문제