2010-03-16 5 views

Répondre

5

Cela le fait ici:

\w+.*?(?:;|$) 
+0

I pense que je comprends ce que | $ est pour, mais je ne comprends pas ce que le?: est en train de faire. Pourriez-vous expliquer? Le – Steven

+0

'(? ...)' est un groupe non congruente. Il n'apparaîtra pas via une référence arrière '\ '. –

+0

Ok, merci. Est-ce que '\ w +. *? (?: [; \ $])' Fonctionnerait de la même façon? – Steven

4

ne pas utiliser regex. il semble que, entre vos noms, vous avez ";" comme délimiteur, utilisez-le pour séparer la chaîne. par exemple Python

>>> mystring = "J. Smith; B. Jones; O. Henry" 
>>> mystring.split(";") 
['J. Smith', ' B. Jones', ' O. Henry'] 
+0

+1 pour le garder simple. Je pense que l'OP voulait que tous les trois noms, alors que 'mystring.split (« ; »)' suffirait. – bernie

+0

thks. j'ai mal lu l'exigence – ghostdog74

2

Ceci est assez simple si vous voulez un regex:

\w[^;]+ 

exemple Perl:

@names = "J. Smith; B. Jones; O. Henry" =~ /\w[^;]+/g; 
# ("J. Smith","B. Jones","O. Henry") 

Ou si vous voulez une scission j'utiliser \s*;\s* (\s* à supprimer les espaces):

@names = split /\s*;\s*/, "J. Smith; B. Jones; O. Henry"; 
# ("J. Smith","B. Jones","O. Henry") 
Questions connexes