Извлечь первое слово из строки - регулярное выражение

У меня есть следующая строка:


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

Точка здесь - это слова, которые могут/не иметь в ней "-" s

Использование регулярного выражения: Как я могу извлечь 1-е слово?

Оцените любую помощь по этому вопросу.

Спасибо, L

Ответы

Ответ 1

Это довольно просто, просто включите допустимые символы в скобки:

^([\w\-]+)

Ответ 2

Подход, не использующий регулярное выражение: если первое слово всегда делится запятой "," вы можете сделать это:

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

Изменить: Предполагалось, что это был вопрос javascript по какой-либо причине.

Ответ 3

Если кто-то в один прекрасный день захочет сделать это в Swift, вы перейдете с расширением:

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
    }
}

Чтобы использовать его, просто напишите:

myString.firstWord()