我有一个字符串看起来像:
61709
我想提取两个破折号之间的倒数第二位数
df.id.str.extract(r'[.-]([0-9]{5})[.-]?')
每个字符串都包含在pandas系列中:
我想出了:
{{1}}
但它会提取前5位数组。
我可以匹配我想要的那个吗?
答案 0 :(得分:2)
您可以使用split
df.id.str.split('-').str[-2]
演示
df = pd.DataFrame(dict(id=['29818-218705-61709-2'] * 1000))
df.id.str.split('-').str[-2].head()
0 61709
1 61709
2 61709
3 61709
4 61709
Name: id, dtype: object
答案 1 :(得分:1)
您可以尝试:
app.module.ts
答案 2 :(得分:0)
您可以使用
[.-]([0-9]{5})[.-][0-9]+$
<强>详情:
[.-]
- .
或-
分隔符([0-9]{5})
- 第1组捕获5位数字[.-]
- 再次成为分隔符[0-9]+
-1+位数$
- 字符串结束。感谢$
锚点,最后匹配的数字组。
另一种方法是利用回溯:
^.*[.-]([0-9]{5})[.-]
请参阅this demo
^.*
将尽可能多地匹配字符串开头以外的任何0 +字符而不是换行符号,因此最后-|.
+ 5 digits
+ {{1}匹配。