我在Javascript中使用正则表达式,但它们似乎并不是从字符串的开头开始的。在一个简单的例子中,我想获取文件名,然后是第一个冒号后的所有内容
//string
file.text:16: lots of random text here with goes on for ages
//regex
(.?)[:](.*)
// group 1 returns 't'
答案 0 :(得分:2)
/^([^:]+):(.*)/.exec('file.text:16: lots of random text here with goes on for ages')
给出....
["file.text:16: lots of random text here with goes on for ages", "file.text", "16: lots of random text here with goes on for ages"]
答案 1 :(得分:1)
试试这个正则表达式:
/^([^:]+)[:](.*)/
阐释:
^ #Start of string
( #Start of capturing class #1
[^:] #Any character other than :
+ #One or more of the previous character class
) #End of capturing class #1
[:] #One :
(.*) #Any number of characters other than newline
?
运算符仅捕获前一个符号中的零个或一个。
您也可以使用字符串操作:
str = "file.text:16:";
var n = str.indexOf(":");
var fileName = str.substr(0, n);
var everythingElse = str.substr(n);
答案 2 :(得分:1)
?运算符返回0或1个匹配项。你想要*运算符,你应该在第一组
中选择不是:的所有东西 ([^:]*)[:](.*)
答案 3 :(得分:1)
非regexy回答:
var a = s.split(":");
然后加入[1]和其余元素。
或者只是获取第一个分号的索引并使用它创建两个字符串。