从字符串中提取第一个单词-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”、“-”等等。