下划线和点之间的正则表达式

时间:2012-12-24 08:23:40

标签: regex

我想在第三个下划线和点之间添加额外的字母数字,例如

CSV_20121023000854Z_MMSC_35dbc3f813.csv

预期产出:

35dbc3f813

这个regix将解决问题(\_\w{15}\_\w{4}\_)(\w+),但是如果字符串大小增加,我希望它更灵活。感谢

4 个答案:

答案 0 :(得分:2)

为什么不是这样的?

_([^_]+)\.csv

它会捕获最后一个下划线和.csv之间的所有内容。

或者,您可以使用您选择的语言将其拆分:

>>> s = 'CSV_20121023000854Z_MMSC_35dbc3f813.csv'
>>> s.split('.')[0].split('_')[-1]
'35dbc3f813'

答案 1 :(得分:1)

_(\w+)\.csv

正则表达式处理贪婪模式,它将继续匹配模式,并将提取匹配的最后一个模式,在您的情况下是必需的字符串。

答案 2 :(得分:0)

这是正则表达式,它不关心下划线之间的字符串长度:

^.*?_.*?_.*?_(\w+)\..*$

匹配部分甚至可以在其中有下划线(在第三个下划线后匹配)。 Dot可以出现在第三个下划线之前。

以下是其中的一个示例: http://regex101.com/r/jT9fR0

答案 3 :(得分:0)

您已经说输入字符串中有三个下划线字符,

1)如果你确定_字符之间会出现一些字符,那么正则表达式应该是这样的:

.+?_.+?_.+?_(.+)\..+

2)如果没有,那么正则表达式应该是:

.*?_.*?_.*?_(.+)\..*

贪婪的算子使操作员不愿意后的问号。