2013-04-13 11 views
7

Jaka byłaby składnia, aby uzyskać wszystkie słowa w ciągu po pierwszym spacji. Na przykład, bobny dom. Tak więc wynik powinien być "miłym domem" bez cytatu.Regex, aby uzyskać wszystko po pierwszym polu

([^\s]+) daje mi wszystkie 3 słowa oddzielone przez;

,[\s\S]*$ > niezłożenie.

Odpowiedz

4

myślę, że powinno być zrobione w ten sposób:

[^ ]* (.*) 

Pozwala 0 lub więcej elementów, które nie są przestrzenią niż jednej przestrzeni i wybiera co przychodzi po tej przestrzeni.

Wykorzystanie C#

var input = "bobs nice house"; 

var afterSpace = Regex.Match(input, "[^ ]* (.*)").Groups[1].Value; 

afterSpace jest "nice house".

aby ta pierwsza przestrzeń, a także w wyniku zmian ekspresji ciąg [^ ]*(.*)

żadne rozwiązanie regex

var afterSpace = input.Substring(input.IndexOf(' ')); 
+0

daje to samo jako ciąg wejściowy – torres

+0

Pokaż kod za pomocą, proszę. – MarcinJuraszek

+0

[^] * (. *) Ten kod, który zasugerowałeś. – torres

1

Właściwie, nie trzeba używać do tego regex proces. Trzeba tylko użyć metody String.Split() w ten sposób;

string s = "bobs nice house"; 
string[] s1 = s.Split(' '); 
for(int i = 1; i < s1.Length; i++) 
    Console.WriteLine(s1[i]); 

Wyjście będzie;

nice 
house 

Oto DEMO.

9

Naprawdę szukałem możliwie najkrótszego kodu. następujący wykonał zadanie. dzięki chłopaki

\s(.*) 
+1

Tak długo, jak wiesz, że '\ s' pasuje do wszystkich białych znaków, a nie tylko spacji – Patashu

+0

zaznacz swoją odpowiedź jako zaakceptowaną, ponieważ rozwiązuje ona Twój problem –

Powiązane problemy