Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中提取第一个单词-regex_Regex - Fatal编程技术网

从字符串中提取第一个单词-regex

从字符串中提取第一个单词-regex,regex,Regex,我有以下字符串: str1 = "cat-one,cat2,cat-3"; OR str1 = "catone,cat-2,cat3"; OR str1 = "catone"; OR str1 = "cat-one"; 这里的重点是单词中可能有/可能没有“-”s 使用正则表达式: 如何提取第一个单词 谢谢你在这方面的帮助 谢谢, L这很简单,只需在括号中包含允许的字符: ^([\w\-]+)一种不使用正则表达式的方法:假设第一个单词始终由逗号分隔”,“您可以这样做: var str1 = "

我有以下字符串:


str1 = "cat-one,cat2,cat-3";
OR
str1 = "catone,cat-2,cat3";
OR
str1 = "catone";
OR
str1 = "cat-one";
这里的重点是单词中可能有/可能没有“-”s

使用正则表达式: 如何提取第一个单词

谢谢你在这方面的帮助

谢谢,
L

这很简单,只需在括号中包含允许的字符:


^([\w\-]+)
一种不使用正则表达式的方法:假设第一个单词始终由逗号分隔”,“您可以这样做:

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

编辑:出于某种原因,假设这是一个javascript问题。

如果有人有一天想在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()

这匹配到第一个逗号的所有字符:^[^,]+这是我尝试过的(有效!),希望是正确的:alert(str.replace(/^([^,]+)(.*)/,“$1”);如果这是您真正想要做的,那么它也可以工作:alert(str.substring(0,str.indexOf(','))
(.*)在您的正则表达式中是完全不必要的。
。我想这次正则表达式实际上更简单。:)他也没有说他在使用javascript。@Seth:是的,你说得对。不知道为什么我认为是js。可能是因为没有类型定义?他说“摘录”,所以我认为它需要括号。我是新来的,所以我可能遗漏了什么,但我从你的(临时?)答案中复制了“^([\w-])+”来测试它。@Ekkehard抱歉;在我发布答案的几秒钟后,我在答案中发现了一个拼写错误,在我更正它之前,你一定已经看到了。你能解释一下()和第一个^的作用吗?在这种情况下,Richard H关于避免直接正则表达式的回答可能是最好的,只需使用这个快速表达式;str.componentsSeparatedByString(“,”[0]的确,您是对的。但是,如果您正在寻找通用的解决方案,那么我将避免使用硬编码的解决方案。也许下一次分离器可以是“u”、“-”等等。