2010-01-07 10 views
9

Nie mogę znaleźć schematu regex dla pasujących ciągów tylko wtedy, gdy nie zawiera białych znaków. Na przykładRegex: nie pasuje, jeśli ciąg zawiera białe spacje

"this has whitespace".match(/some_pattern/) 

powinien powrócić nil ale

"nowhitespace".match(/some_pattern/) 

powinien zwrócić MatchData z całego łańcucha. Czy ktoś może zaproponować rozwiązanie powyższego?

+0

Czy próbujesz ustalić, czy ciąg zawiera białe znaki, czy też ciąg zawiera pewien wzór, ale TYLKO jeśli nie ma spacji? – mletterle

+0

Zasadniczo chcę, aby zwracano zero, jeśli ciąg zawiera białe spacje. –

Odpowiedz

19

W Ruby myślę, że byłoby

/^\S*$/ 

Oznacza to "st sztuka, dopasować dowolną liczbę znaków non-białych, koniec „

+0

Ahh! Na końcu brakowało mi końca kotwicy. Twoje zdrowie! –

+0

@Bart, zauważ, że '\ n' i' \ r' są również uważane za znaki białe. –

+4

Możesz zamiast tego użyć '/ \ A \ S * \ Z /', ponieważ dopasuje on początek i koniec ciągu, a nie początek i koniec linii. '" lineone \ nlinetwo "' dopasowane do '/^\ S * $ /' zwróci '" lineone "' –

3
>> "this has whitespace".match(/^\S*$/) 
=> nil 
>> "nospaces".match(/^\S*$/) 
=> #<MatchData "nospaces"> 

^ = Początek łańcucha

\ S = charakterze non-spacji, * = 0 lub więcej

$ = koniec sznurka

1
"nowhitespace".match(/^[^\s]*$/) 
1

Chcecie:

/^\S*$/ 

To mówi” dopasuj początek napisu, potem zero lub więcej znaków spoza odstępu, a następnie koniec struny. " Konwencja dla predefiniowanych klas znaków polega na tym, że mała litera oznacza klasę, a duża litera oznacza jej negację. Tak więc, \s odnosi się do białych znaków, a \S odnosi się do białych znaków.

3

Nie wiem, może to zrobić w jeden wzór, ale można zrobić coś takiego:

"string".match(/pattern/) unless "string".match(/\s/) 
+0

+1 za odmienne przemyślenie tego pytania ...pytanie może być interpretowane jako dopasowujące ciąg znaków zawierający wzorzec "x", o ile ciąg nie zawiera białych znaków ... –

4

Zawsze możesz wyszukiwania dla Spaces, następnie neguje wynik:

"str".match(/\s/).nil? 
Powiązane problemy