我想在网址中找到斜杠之间的最后一个字。例如,在“/ gallery / haha / nika / 7907 / 08-2015”中找到“nika”
我在我的python代码中写了这个:
var lat = <?php echo json_encode($lat)?>;
var lon = <?php echo json_encode($lon)?>;
var unidad = <?php echo json_encode($unidad)?>;
while (i < <?php echo json_encode($a)?>)
{
var pos = new google.maps.LatLng(lat[i],lon[i]);
var marker = new MarkerWithLabel({
position: pos,
draggable: true,
raiseOnDrag: true,
map: map,
icon: 'icon.png',
labelContent: unidad[i],
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 0.75},
});
但我有一个空列表:
>>> text = '/gallery/haha/nika/7907/08-2015'
>>> re.findall(r'/[a-zA-Z]*/$', text)
如果我删除那个美元符号:
[]
返回列表不为空,但错过了“/ haha /”:
>>> re.findall(r'/[a-zA-Z]*/', text)
有谁知道为什么?
答案 0 :(得分:5)
在
中使用 lookaroundsre.findall(r'(?<=/)[a-zA-Z]*(?=/)', text)
$
表示字符串结束,因此您将获得空字符串。
haha
因为您正在捕获/
而丢失,因此/
不会留给haha
。使用lookarounds时,它是一个 0宽度断言,它不会消耗/
,因此所有都被捕获。
答案 1 :(得分:2)
你不需要正则表达式,
>>> s = "/gallery/haha/nika/7907/08-2015"
>>> for i in reversed(s.split('/')):
if i.isalpha():
print(i)
break
nika
或
>>> [i for i in s.split('/') if i.isalpha()][-1]
'nika'
>>>
或
>>> j = s.split('/')
>>> [i for i in j if i.isalpha()][-1]
'nika'
答案 2 :(得分:2)
我想在斜线之间找到最后一个字......
要获得最后一次......你可以随时扔掉greedy dot来吃掉:
^.*/([a-zA-Z]*)/
capture想要$1
的东西。见test at regex101