我有以下字符串
car.wheel
car.wheel.mirror
car.wheel.mirror.seats
car.wheel.mirror.seats...
我想从中提取car
并避免附加对象的属性,例如.wheel
,.wheel.mirror
,.wheel.mirror.seats
等。
我现在的正则表达式是
/(.*)?(\.+.*){2}/
这适用于2或3,因为我指定了数字,但我想创建而不指定属性数,因为它可以是0或更多
所以我尝试了以下两种但不起作用
/(.*)?(\.+.*){0,}/
/(.*)?(\.+.*)*/
我在Jquery / JS中尝试这个,如果这对使用别的东西有所帮助。
答案 0 :(得分:4)
无需使用正则表达式。即使您的字符串没有任何其他属性,也可以进行简单的拆分:
'car'.split('.')[0]
'car.wheel.mirror.seats'.split('.')[0]
答案 1 :(得分:3)
我会用:
var x = $(yourstring).split(".");
console.log(x[0]);
或者
var text = "your.text.string";
var regex = /^(.*?)\./;
var matches = text.match(regex);
console.log(matches[0]);
答案 2 :(得分:0)
我想这是标记的" perl"对于正则表达式的一部分。我同意@silkfire - 处理这些选择的字符串,你真的不需要正则表达式的全部功能。
无论如何,在perl中也是如此:
my @strings = qw {
car
car.wheel
car.wheel.mirror
car.wheel.mirror.seats
car.wheel.mirror.seats.heater };
say [ split /\./ ]->[0] for @strings
(稍微OT,但标签鼓励我):
与Javascript字符串不同,它不是Perl中的对象,但您可以假装:
perl -E 'say +(split /\./, "car.wheel.mirror.seats.heater")[0]'
甚至更不客气:
perl -Mautobox::Core -e ' "car.wheel.mirror"->split(qr/\./)->[0]->say '
使用autobox::Core
,您可以将事物链接起来,并且在不必放弃perl5的情况下感受到所有的常规。