extraire le premier mot de la chaîne regex

j'ai la chaîne suivante:


str1 = "cat-one,cat2,cat-3";
OR
str1 = "catone,cat-2,cat3";
OR
str1 = "catone";
OR
str1 = "cat-one";

Le point ici est de mots peut/ne peut pas avoir "-"s

utilisation de regex: Comment pourrais-je extraire le premier mot?

reconnaissant de toute aide sur ce point.

Merci, L

19
demandé sur lshettyl 2011-02-18 15:48:00

3 réponses

c'est assez facile, il suffit d'inclure les caractères autorisés entre parenthèses:

^([\w\-]+)

41
répondu Seth Johnson 2011-02-18 12:50:43

une approche n'utilisant pas de regex: en supposant que le premier mot est toujours délimité par une virgule ", " Vous pouvez faire ceci:

var str1 = "cat-one";
var i = str1.indexOf(",");
var firstTerm = i == -1 ? str1 : str1.substring(0, i);

Edit: supposait qu'il s'agissait d'une question javascript, pour une raison quelconque.

1
répondu Richard H 2011-02-18 12:59:19

Si quelqu'un, un jour tiens à le faire dans Swift ici vous allez avec une extension :

extension String {

    func firstWord() -> String? {
        var error : NSError?
        let internalExpression = NSRegularExpression(pattern: "^[a-zA-Z0-9]*", options: .CaseInsensitive, error: &error)!
        let matches = internalExpression.matchesInString(self, options: nil, range:NSMakeRange(0, countElements(self)))
        if (matches.count > 0) {
            let range = (matches[0] as NSTextCheckingResult).range
            return (self as NSString).substringWithRange(range)
        }
        return nil
    }
}

Pour l'utiliser, il suffit d'écrire:

myString.firstWord()
0
répondu Kevin Delord 2015-01-31 02:52:24